X



トップページ運用情報
1001コメント347KB

bbs.cgi再開発プロジェクト 3

■ このスレッドは過去ログ倉庫に格納されています
00012chtubo愛用者〜ヘ(゚д゚ヘ))))))〜61 ◆yBEncckFOU
垢版 |
04/02/13 19:08ID:o3jHs/Mb
peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。

関連スレ
【Project peko】2ch特化型サーバ構築作戦 Part6
http://qb3.2ch.net/test/read.cgi/operate/1076413123/
◆ 全サーバトリップ統一作戦
http://qb3.2ch.net/test/read.cgi/operate/1067245837/
bby -- スレッド情報一元管理システム構築スレ
http://qb3.2ch.net/test/read.cgi/operate/1073058944/
BBQ システム(公開串リストメンテ)
http://qb3.2ch.net/test/read.cgi/operate/1073061576/
【連投規制】Samba24 情報要望スレ その3
http://qb3.2ch.net/test/read.cgi/operate/1075568934/
【広告】Rock54【自動排除】 3
http://qb3.2ch.net/test/read.cgi/operate/1074735308/
■ 新しいサーバで read.cgi が正しく動かない問題。 (dat落ち)
http://qb.2ch.net/test/read.cgi/operate/1047840578/


前スレ
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/test/read.cgi/operate/1053067870/
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/test/read.cgi/operate/1069144193/
0632仕事人 ★
垢版 |
04/03/05 19:21ID:???
引越し時に chmod で 777 にするんじゃなく
chown(でしたっけ?) 後 666 にすべきなのか?

ということは、引越し後の正しい呪文は
0634root ★
垢版 |
04/03/05 19:41ID:???
一般ユーザ(にsuexecされたCGI)がchownなんてできないと思うなぁ。
0636 ◆qb.x27/m96
垢版 |
04/03/05 19:52ID:7NAUewz2
1000越えて書き込めていたのは確認した範囲では
去年以前に建立てられたスレのようだったし
今年に入ってから立てられたもので、1000ストッパーが
効いていないものってなかったような、、

サザンさんの>>628あたりに謎の答えがありそう、、、
0637root ★
垢版 |
04/03/05 20:04ID:???
古いスレを中心に、オーナーがおかしいやつがあるから、そいつら修正すればいいってこと?
(ストッパーが効かない原因のひとつ)

ディレクトリの持ち主がその人であれば「消す」ことはできるから、
例えばnobodyとかが持ち主のファイルを探して、一斉にこんなかんじにすればいいのかな。

(1000000000.dat のオーナーがおかしいとする)

cp -p 1000000000.dat tmp1000000000.dat
rm -f 1000000000.dat
mv tmp1000000000.dat 1000000000.dat

2行目でいきなりmv -fしてもいいけど、なんだかいやな予感がするんで。

find -user nobody とかして、該当のファイルについて一斉にやればよさそうな気がする。
0638root ★
垢版 |
04/03/05 20:06ID:???
FreeBSDでは、

cp -p 1000000000.dat tmp1000000000.dat
mv -f tmp1000000000.dat 1000000000.dat

でOKでした。Linuxでもやってみるか。
0639root ★
垢版 |
04/03/05 20:08ID:???
あ、そっか。Linuxでsuできる環境もってないや。
どなたか、実験きぼんぬ。

% mkdir test
% cd test
% sudo touch A
% cp -p A A.tmp
% mv -f A.tmp A

で、そのユーザのAになれば無問題。
0640仕事人 ★
垢版 |
04/03/05 20:14ID:???
>>635
いや banban で
0641 ◆qb.x27/m96
垢版 |
04/03/05 20:50ID:7NAUewz2
>>637
古いスレでオーナーがおかしいやつの中で
1000間近なスレのURIがいくつか分かりますか?
0644root ★
垢版 |
04/03/05 20:59ID:???
>>641
例えばbubbleサーバのnatsumeloj板なら、

find ./public_html/natsumeloj -user nobody -name \*.dat -print

なんてのを流せば、すぐわかるかと。
これをサーバの数分、板の数分やればいいかな。

ひまをみて、_service/を見て板名とってきてfindかけて、
オーナーをfixするためのshell scriptでも書いてみましょ。
できたら、各マシンで手分けして流していただくということで。
0648root ★
垢版 |
04/03/05 21:04ID:???
移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647

というか、普通はこんなこと起きない気がしますね。< オーナが違う
途中でsuexec環境に変わった場合にのみ、起こるはず。

あるいはsuexecがバグっていて、「httpdのオーナーが抜けてきちゃった」場合とか。
# 経験したことあります。
0650root ★
垢版 |
04/03/05 21:05ID:???
>>648 補足。
> 移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647

理由: マシンをまたいだファイル移動の時に、オーナーが変わるから。
0653未承諾広告※ ◆TWARamEjuA
垢版 |
04/03/05 21:16ID:JZ5VNBHA
>>639
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:13 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 root root 0 Mar 5 21:12 A
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A.tmp
[(・∀・)ニヤニヤ test]$ mv -f A.tmp A
[(・∀・)ニヤニヤ test]$ ls -la
合計 8
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:14 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A
[(・∀・)ニヤニヤ test]$
0654 ◆qb.x27/m96
垢版 |
04/03/05 21:18ID:7NAUewz2
>>644
色々と考えられる事はあるのですが順番にやっていかないと
どれが原因か分からなくなりそうなので、まずこれから。。

見つかったスレに1000番目を書き込んだ時にこれ↓が表示されるかどうかが知りたかったんですよ。
>"ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!"


で、おそらく表示されるだろうとは思うのですが
1000 over を判定しているのはこれ↓を書き込む為にしているような、、
>"1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n"


cgiの最初の方でこれ↓しか見ていないのは負荷軽減の為だと思うのですが
1000を越えているかどうかを最初に見ればパーミッションがどうなっていようと
1000を越えているスレには書き込めないと思うのですけど、既出の問題なのかしら、、

>#.datが存在してないか書けないならばいばい
0655未承諾広告※ ◆TWARamEjuA
垢版 |
04/03/05 21:18ID:JZ5VNBHA
>>653
drwxr-x--- 24 root root 4096 Mar 5 21:09 ./
drwxrwxrwx 21 root root 4096 Feb 25 12:56 ../
[(・∀・)ニヤニヤ root]$ mkdir test
mkdir: ディレクトリ `test' を作れません: 許可がありません
[(・∀・)ニヤニヤ root]$
0656root ★
垢版 |
04/03/05 21:34ID:???
>>653
さんくす。Linuxでも問題なさそうですね。
んじゃ、shell script作ってみます。

今日はJimさんデーの2日目なんで、明日以降になるかもしれませんが。
0659root ★
垢版 |
04/03/06 03:05ID:???
902のカーネルだけ、5.2.1-RELEASE-p1に上げてみた(i386モード)
しかし、状況は変わらず。
0660root ★
垢版 |
04/03/06 03:10ID:???
options AAC_DEBUG=3
とか入れてみるか。
0668動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 15:42ID:26zSxLur
1000越えて書き込まれてたスレ発見。
真・スレッドストッパーのガイドライン
http://that.2ch.net/test/read.cgi/gline/1022203584/l50
試しに書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と出ました。
このスレが建ったのは2002年、>>636で書かれている去年以前に建ったスレ。

手を加えるならXXX 名前:書けませんよ。。。 投稿日:停止
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ と本当にスレッドストッパーかけてくださいと冗談言ってみる。
0669動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 15:45ID:26zSxLur
ギコナビで書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と表示されているが実際には書き込まれてます。

0672仕事人 ★
垢版 |
04/03/11 16:37ID:???
自動で止まった?
0674動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 19:03ID:yZZ2AD3B
こっちに誘導されて来ました

yournet.ne.jpの規制が先ほど解除されたのですがlive10の規制が解除されていないようです。
解除の方よろしくお願いします。
0676動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 19:23ID:/dqMBLPO
規制絡みの設定のひとつF22が入ってないんじゃない?>live10

【Project peko】2ch特化型サーバ構築作戦 Part8
http://qb3.2ch.net/test/read.cgi/operate/1078972549/

19 名前:root ★ 投稿日:04/03/11 13:36 ID:???
live10, f22への登録おながいします。>サザンさんかな。

【実況板】 live5/7/8/9 鯖 【専用スレッド】その4
http://qb3.2ch.net/test/read.cgi/operate/1078921755/359

0681 ◆qb.x27/m96
垢版 |
04/03/12 13:05ID:H9TO5cST
そのうち、じゃなくて1021で止まる、ですね。
0682 ◆qb.x27/m96
垢版 |
04/03/12 13:13ID:H9TO5cST
>>625 ソース


>if($lognum > 1020)#最後の手段
          ↑
       これを超えたら
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!");

それ以降は↓になるわけです。
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
0683動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/12 13:25ID:dfBaKHPM
最後の手段が効いてるけど緊急緊急緊急は効いてないってことか
最初から$lognum > 1000で判定しない理由は何だっけ?
0684 ◆qb.x27/m96
垢版 |
04/03/12 14:00ID:H9TO5cST
効いてないのは古いファイルが chmod(0555, $dattemp); 出来ていないから。
そこで 1020を超えた時点で条件に引っ掛けて、datファイルを新しいファイルにコピーして
そのファイルを chmod(0555, $dattemp); している。

その後今までの古い datファイルは消去。
新しいファイルはパーミッションが 0555 になっているので今度は「緊急緊急緊急」で分岐するというわけ。
0686▲ 某ソレ511
垢版 |
04/03/13 03:00ID:1eDifo9s
>>685
たぶん移転するためのcgiはbbs.cgiじゃないから
ここじゃないほうがいいかなぁ、、
まあ、もう書いちゃってるんで言ってもしょうがないですが。
0687動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/13 03:02ID:ldPMDkf/
う〜ん、ここで1000ストッパーの改造がはじまってから、
>>685の現象が多発するようになったので、
関係あるのかな?って思ったんですが、、、
ハテサテ
0691動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/14 22:21ID:UADx2/NY
Perlで書けよな。
高速だし、柔軟性あるし、大抵のサーバーで動くし、機能的にも問題ない。
PHPでは絶対書くな。
0696動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/15 01:35ID:/V72idmY
ひぇ〜ごめんなさい。C というよりはバイナリ実行形式でした < perlcc
ちなみにオプションをつければ C のコードも出せるようで。半可通でスミマソン
0697root ★
垢版 |
04/03/15 02:16ID:???
>>695
(巨大な).cファイルに変換されて、Cコンパイラでコンパイルされますです。
.cファイルも取り出せますが、読めたもんじゃありません。
0698動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/15 13:14ID:PM/gJL/z
停止済みのスレッドの移転の場合は再停止(もってなければお願い)
停止前のスレッドの停止+移転の場合は移転してから停止。

が正しい措置と思われ。
0699動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/15 13:39ID:mog12nGi
>>697
そーなるとperlccで吐くコードではまだまだ無駄がありそうでつね。
やはりC(++)で最適コードを書いたほうがいいのかな・・・?
0700▲ 某ソレ511 ZC188075.ppp.dion.ne.jp
垢版 |
04/03/15 13:41ID:D4rWoUrA
>>699
ひ(ry がさわれなくなるからCで書くのはダメ、なんじゃなかったかな。
ただ、トラックバック機能のためにread.cgiをちょっと改造してたところを見ると
もしかしたらCもさわれるのかもしれないけど。
0703動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/15 14:53ID:ZVqT935Q
>>689 >>698
>>687-688の意味がちゃんと伝わってない希ガス

>スレスト、ゴミ箱移転跡が移転すると書き込めるようになるのは仕様です
「移転すると」ってのは鯖移転だと言いたいようだけど、
>>687-688の指摘はそうじゃなくて

削除人が移転やスレスト呪文唱えた直後のスレッドなのに、スレストが効いてない
=パーミッションが書き換わってない ってことです。

>>686に同意しつつも一応念押し。

>>702
触らせないようにすれば、その人に全面的にお任せ になるだけかと。
0708動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/16 16:43ID:NnpYf1ai
>>703マジで多いです
スレ移動した後、移転後をさらに停止させなきゃならないので
2回スクリプトを走らせなきゃならないし、ログも2倍溜まってるような・・・・・

ソースは無くて感覚だけど、ここで1000ストッパーいじりがはじまってから
増えたのは確かだと思う
>>686だとしても、どこに書きゃいいんだか
管理人に連絡か?
0710動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/31 21:36ID:RCwxJg1s
ここまで斜め読みでカキコ。
dat書き込み時にレス数を数えて1000達成したら、
その場でストッパーかけないと本来はダメでしょうね。

理由は、数える→1001スレストの間に
他のプロセスがdatに書き込む可能性がありますから。
0714動け動けウゴウゴ2ちゃんねる
垢版 |
04/04/01 23:17ID:50q0Uk4B
>>712
flock処理周りの実装バグったんじゃねーの?
過去のバグを前提にシステムのポリシー決めてたら
ろくな方向に向かわんぞ。
「OSによって問題がある」とかなら
symlinkで代替してもいいしさ。
そもそも書き込みは排他を前提にしないと
単純に設計がおかしいってことになる罠

排他無しは
ときどきリセットされるアクセスカウンターと同じ設計で
それは直すべきもの
0715動け動けウゴウゴ2ちゃんねる
垢版 |
04/04/01 23:20ID:50q0Uk4B
そもそもサーバー構成がまともじゃねぇよ。
表側に位置するCGIサーバー群は全て同じ仕様と内部構造にして
DNSラウンドロビンにて負荷分散。
データ管理は裏方のDBサーバー。

DBはMySQLみたいな汎用RDBMS使ってもいいし、
NFS使ってUnix FSだけで管理してもいいし(その扱いは今とほとんど同じ)
裏と表の間でやりとりする専用プロトコルと専用メソッドを開発してもいいし。
0716動け動けウゴウゴ2ちゃんねる
垢版 |
04/04/01 23:28ID:50q0Uk4B
でもって、クライアント側からのリクエストが閲覧だけのとき(書き込みではないとき)
の処理を徹底的に減らす必要があるな。
閲覧処理で行われる「いつもやってる計算」の中の「いつも結果が変わらない処理」
は書き込みのときに全て終らせてキャッシュさせておく。
主にHTMLに対する整形があるだろう。
書くレス番ごとのHTML整形されたファイルを作ったり
1-100を選ばれた場合の整形済HTMLを用意したり。

あと最も激しい負荷の矢面に立たされる読込処理のCGIは
C/C++で書いておく。そしてstatic link。
もしくはC/C++で書かれたプログラムをapache module化する手もある。
ここ数年仕様がほとんど変わってないんだから
これからも仕様は変わらないだろう。
「変更容易だが速度は遅い」という特性のスクリプティング言語を使っても
あまりメリットないよ。

「えー。Cわかんないよ。Perlならわかるけど」
とかいうなら、おまえんちのApacheはPerlで書かれてるのかと問いたい。
0717動け動けウゴウゴ2ちゃんねる
垢版 |
04/04/01 23:32ID:50q0Uk4B
CGIとしてのperlを高速化したいなら
mod_perlにするかprelinkを使うのをおすすめ。
prelinkツールにてperl本体を前処理しておけば
perlの起動が高速化される。
0718未承諾広告※ ◆TWARamEjuA
垢版 |
04/04/02 08:25ID:RlsJBx6I
鳥インフルエンザキャリアの人?(w

だったら焼却漏れがありますよと伝えなきゃ(嬉)@T波町
0719▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo
垢版 |
04/04/02 09:31ID:TSOc+dgc
最近過去ログ周りに注力しているせいか放置されている最寄ですが、
bbs.cgiのmod_perl化は検討されています。

ただ今はperlccによるバイナリ化で
それなりに効果を挙げているようなので現状でとまっているようです。

しかし吐くCコードとバイナリが巨大なので
メモリを圧迫しているということはあります。
理想はC化なのですが、そうするとひ(ryが扱えないということらしいです。

read.cgiは既にCです。
I/Oのはげしいスレはdatは常時オンメモリです。

NFSマウントはセキュリティ上あまり好ましいものではありません。
余計なポートを空けることになるからです。
# NFS over HTTPはできそうですが、結局負荷増につながりそう。
0720▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo
垢版 |
04/04/02 09:34ID:TSOc+dgc
>>719
続き。
2chにおける一番の負荷はディスクI/Oです。
そして一プロセスあたりで一番使うのがbbs.cgiです。

root師の言葉を借りるならば、「1にI/O、2にI/O・・・」だとか。
07217M. ◆dq7M./4Uw.
垢版 |
04/04/02 13:16ID:0I3x2u/S
>理想はC化なのですが、そうするとひ(ryが扱えないということらしいです。
こうゆうところがひろゆ子らしいとゆーかなんとゆーか。。。
0722▲:/usr/local/bin/ch2 -o i686 ◆P8fXJj6wwo
垢版 |
04/04/02 13:59ID:TSOc+dgc
後このスレで議論されまくっていますが、
bbs.cgiは仕様変更が多いのでチューンがめちゃくちゃ甘いですね。

コードの整理とC化で倍速になりそうな悪寒。
0723見習い▲ ★
垢版 |
04/04/02 14:09ID:???
>>722
1,000倍になると思われ、

で、現在不具合はあるのかな? < bbs.cgi
0724root ★
垢版 |
04/04/02 14:14ID:???
>>723
個人的には、サーバ落ちによるものを除いても、復帰依頼の回数がやや増えた気がしますね。
ただ、復帰屋さんにまめに動いていただけているので、運用でカバーできているような気もします。
0725動け動けウゴウゴ2ちゃんねる
垢版 |
04/04/02 14:42ID:YXn5ZZX7
現行のbbs.cgiのソース公開は無理でも、Cで一から作り直すのは駄目なんですか?
それこそ、オープンソースで遣れば荒らし対策とかもちゃんと出来そうな気もするし。

ひろゆきの気持ちとしては、弄れなくなるのは「嫌」なのかも知れないけど、運用とし
ては別に良いんじゃないかぁ。現行だって随分人任せみたいだし(w
0726見習い▲ ★
垢版 |
04/04/02 14:47ID:???
>>725
そこは管理人から何回も名言されているので
私はその言葉を聴いて私として行動していくだけです。

あなたはあなたの道を行けばいいだけかと、
誰も邪魔しないと思います。
前進あるのみ。
0727動け動けウゴウゴ2ちゃんねる
垢版 |
04/04/02 15:47ID:7gYfzu4s
ひ(ry はPerlしか使えないんだっけ?
でも最近「弄った」とか言っているの見たことないし、
ひそかにC化しちゃってもいいんじゃないの?ばれないって (w

で、flockが使えないから 排他処理全くしていないって本当なの?
本当ならすごいね。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況