【Project peko】2ch特化型サーバ・ロケーション構築作戦 Part15
うーん、難しいなぁ。 mod_perl化って、言われているほど簡単じゃなさそうだ。
なるほど、mod_perlすると最初のディレクトリが / になるんか、、、。
545 :
留守番 ★ :04/11/22 02:53:47 ID:???
導入されたですか?
悪戦苦闘中、、、。 ほとんどの障害はクリアできそうなんですが、 親元のcgi側で、 require "本体.cgi"; ってやって、 そっちで exit; ってやると(ごぞんじのようにbbs.cgiはそうやっている)、 [Sun Nov 21 10:17:31 2004] [error] ModPerl::Util::exit: (120000) exit was called at 本体.cgi line exitがある行Compilation failed in require at 親元.cgi line requireの行.\n ってなって、500 Internal Server Error になるです。 最近のmod_perlは、exit; を使ってもいいように改良されているのですが、 requireした先で exit するのは許してないのかも。 あるいは mod_perl そのもののバグなのかどっちなのかは、現在調査中です。
つまり、
>>546 を簡単にいうと、
A.cgi
--------------
#! /usr/bin/perl
...
require "B.cgi";
--------------
B.cgi
--------------
exit;
--------------
ってのが、ちゃんとうごかんわけです。
個人的には、mod_perlのバグのような気がするなぁ。
いままでにクリアした障害: 1)SuExecと相性が悪い UserとGroupをch2ex7/ch2に設定 2)カレントディレクトリがcgiを置いてあるディレクトリにならない とりあえず明示的に最初のほうでchdir()する 3)bbs.cgi以外のcgiに影響をおよぼして欲しくない <Files bbs.cgi> </Files> で囲む
試しに require をやめて、親元の下に本体をくっつけてみると、mod_perl配下でちゃんと動きました。 うーーーむ、、、。
exit; を Apache::exit; にしてみるとか。
>>551 それはもうやったんすよ。
ちなみに、Apache2だからmod_perl2なんで、
Apache::exit; じゃなくて ModPerl::Util::exit; にしないとだめです。
で、結果は同じでした。 ちゃんとModPerl::Util::exitはexit;だけで呼ばれるみたい。
む、、、止まったか。< ex7
bbs.cgi をとりあえず動く状態 (
>>550 ) にして少し動かし続けたところ、突然反応がなくなりました。
pingはかかる、、、。
メモリリークとかが起こった予感。
ex7はリブート要請しました。 みんなが何年もの間言っていたほど簡単には、mod_perl化はできないとわかった、、、。
いっそbbs.cgiを1から書き直すとか……。 誰がやるんだとか言う突っ込みはなしの方向で一つ。
俺も一から書き直したが早い気がする。
言い出しっぺの法則で
>>558 が(りゃ
やっぱbbs.cgiが(りゃ だからか、、
今後やるとしても、まずは、基礎研究とじっくりとした調査が必要そうですね。 環境変数とか、動作の違いとか。 で、世の中の解説やWebにあるページとかを見ても、 mod_perlの2系(with Apache2)は、実はあまり多く解説されていないように見えます。 つまり、練りが足りないということがじゅうぶん考えられる。 もちろん、じっけん!じっけん!(AA略 して、 ここで練るというのもありですが、 そうするにしてもまずは事前準備をじっくりやって、勝ち目が出てきてからってことになるかなと。 ということで今日のところは、負け&撤退ということで。
寝る前に、試みた設定をダンプしておこう。 何か、設定に間違いがあったのかもしれない。 ・mod_perlはportsからインストール(www/mod_perl2) ・httpd.conf LoadModule perl_module libexec/apache2/mod_perl.so <IfModule mod_perl.c> PerlModule Apache2 </IfModule> (略) <Directory "/home/ch2ex7/public_html"> (略) <IfModule mod_perl.c> <Files bbs.cgi> SetHandler perl-script PerlResponseHandler ModPerl::PerlRun PerlOptions +ParseHeaders </Files> </IfModule> </Directory> # 以下は動作確認の際のみ入れた設定 # mod_perl status <IfModule mod_perl.c> <Location /perl-status> SetHandler perl-script PerlResponseHandler Apache::Status </Location> </IfModule>
これで、有効にした後でエラーなくカキコできたことは確認。(
>>561 のスレの最後のほう2つ)
しかしその後、リモートログイン窓の反応なくなる。
リモードコンソールのlogin:も出なくなった(エコーバックはあった)
メモリがめいっぱいになった時と同様の動作であったため、
メモリリーク? が起こったのかもしれない。
ただしsyslogには、そのようなメッセージはなし。
<Files *.cgi> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI </Files> Perlrequire "〜/startup.pl" ===startup.pl================================ use Apache2 (); use subs qw(exit); *exit = \&ModPerl::Util::exit; 1; ============================================ #!/usr/local/bin/perl use strict; use warnings; if (exists $ENV{MOD_PERL}) { my $path = $ENV{SCRIPT_FILENAME}; $path =~ s|/[^/]*$||; chdir($path); }
>>565 自分の環境でやってみました。
>>546 なパターンのプログラムの場合、同じ結果ですね。
で、ModPerl::Util::exit に変えても同じ。
[error] ModPerl::Util::exit: (120000) exit was called at ./test2.cgi line 1Compilation failed in require at /home/hoge/public_html/test/mod_perl/mod_perl_test.cgi line 33.\n
つまり、requireした先でModPerl::Util::exit; は呼んではいけないらしい。
use Apache::compat; を startup.pl に入れてみたけど、結果は同じ。 この問題が解決できないと、メンテナンス性という意味でつらいかも。 ということで、とりあえずここまで。 しばらく本業します。
bbs.cgiをPerl5.8.5以降専用に大幅にリファクタリング。 mod_perl2でバグるところは書き方がしくじっている可能性が高い。
土曜の日テレの「キター」と、
さっきのCXの「ドーン」を無事にクリアできたということは、
やはり
>>535 が効果を発揮したのか。
21:00からのTVタックル@liveanbでどうなるか
やっぱPerlのような物に拘るのはもう限界じゃない? preg_hogehoge()も付いてるあれの方がまだ安全というか、なんというか。
>>571 ひ(ryがいぢれないものはだめなのでわ?
PHPならひ(ryのひともいじれるんじゃ?
夜○さんが弄れない予感。
で、その夜○さんとやらはmod_perl2用のPerlが弄れるのか?
たぶん たぶん 2001年8月の2ちゃんねるの規模は、、、 現 tiger 2台とみた、
北ネット弱えええ!!!
それは・・・(びっくり そりゃあ色々変わっていくのが自然だよなぁとオモタ。
てことはなにかい。 4 x (morningcoffee + news4vip + entrance + keiba + base) = 2001年8月の2ちゃんねる っていうことなのか。
8月の閉鎖騒動の時は圧縮してなかったんでわ?
>>581 そっすね。
圧縮前の転送量ベースなら、ほぼぴったりか。
>>580 狼とVIPの書き込みの多さはただごとじゃないからのう
野球と競馬もROMが半端なく多いからのう
つまり、圧縮して30Mbpsくらいだったのかぁ。 2001年8月の2ちゃんねる = 2 x ex7鯖 = ex7鯖 + news18鯖 + news19鯖 x 2 = morningcoffee + news4vip + entrance + keiba + base + anime + mnewsplus + newsplus x 2 (trafiicinfoは各種データがmnewsplusの2%くらいなのではずした) (ノ∀`)アチャー
すげー あらゆる意味で・・・
もしかして、bbs.cgi内で開いたファイルで 明示的にcloseしてないのがあって それがmod_perlで動作させようとしたときに影響してる、 なんてことはないですかね。 いや、mod_perlでexitした時の動作とか全然知らないし メモリ不足が原因なら、全然関係ないんですが。
exitの代わりにreturnで戻すのはだめ? 常駐してんだから終了させんじゃなくapacheに戻してやる。 exitするとデータがクリアしたのに、他のプロセスで同じモジュールが動き続けて馬鹿になってゾンビが出る。 dieは?こいつも同じ原因を作る。
mod_perlからはとりあえず一時撤退するとして、 SpeedyCGIを使ってみるというのは、どうなんだろう。
Perl側を変えないとすると、こうかな。 # まだ入れてない。 LoadModule speedycgi_module libexec/apache2/mod_speedycgi.so # まずは安全のため、機を見てコメントアウトとか数字を増やすとか <IfModule mod_speedycgi.c> MaxRuns 0 </IfModule> # bbs.cgiだけSpeedyCGIにしてみる <IfModule mod_speedycgi.c> <Files bbs.cgi> SetHandler speedycgi-script </Files> </IfModule>
きたく。ねむい。
>>589 は、明日昼間あたりに入れてみるか。
これは何がどうなってどうなると予想されるものなんですか? 現状の2ちゃんねるにおいての話しとして、
mod_perlにしてもそうですが、 基本路線としては、c系(PHP)を高速化した路線と大同小異です。 つまり、毎回でっかいPerlインタプリタを起動するコストを下げたいと。
LA を下げるのに寄与するって考えればいいのかな? 処理が比較して短い時間で終るからどんどん捌けるという路線?
てなわけで、 if 成功 bbs.cgi のすばらしい高速化が実現し、負荷耐性が上がるかもしれない else 歓迎せざる、予期せぬ結果を招くかもしれない endif ということになります。 いろいろ調べていて、それなりに高速化の成功例も報告されているようなので、 まずは実験してみようかなと。
>>594 そですね。短い時間というか、
1つのbbs.cgi起動・実行をより少ない資源で済むようにすると。
仕込みはしてあるので、
万一「あっちゃー」が起こった時にリブートしていただけるんでしたら、
今やってもいいかなぁ、とか思っていたりして。して。
_ ∩ ( ゚∀゚)彡 じっけん!じっけん! ⊂彡
i am ready
入れた。まずは、 <IfModule mod_speedycgi.c> MaxRuns 0 </IfModule> 入り。
#<IfModule mod_speedycgi.c> #MaxRuns 0 #</IfModule> をコメントアウトした。
tiger503 (ex7) ですか?
ちょっと様子見、、、。
ひょっとすると、設定間違ってて、 bbs.cgiの1行目を直さないといけない、、のかも。
bbs.cgiの1行目を、 #!/usr/local/bin/speedy に変更した。
>>606 はだめすね。
/usr/bin/perl に戻しました。
効いてない、、、。のかも。
どんどん LAが・・・
うまく効いてないかな?
500 エラーになるすね。
>>606
この状態でしばらく動かしてみるです。
>>608 LAは、この時間のex7だといつもこんなかんじすね。
つまり、LA=30とか50とかでは、どってことないってころです。< この時間のex7
mod_perl化のための一歩 ・exit()をApache::exit()でオーバーライド
ですね。500エラーの原因をつかむ必要がありそう。
今Apache起動しなおしました。LAが一時的に上がるです。
ちょっと、簡単なスクリプトで試してみるです。
>>617 use CGI::Carp qw(fatalsToBrowser);
を入れると、エラーの実態が表示されるので参考になるかと。
ただし、その部分のソースコードも表示されるのでゴニョゴニョ
>>621 とりあえず、正しいhttpdレスポンスを吐き出していないかと思いますです(苦笑)>ぷりめちゃーなんたら
#!/usr/bin/speedy -r10000 use strict; use warnings; use sigtrap; ...
<IfModule mod_speedycgi.c> <IfModule> で囲んじゃ、だめとわかたです。 囲まなければ、1行目を変えなくてもspeedyで起動する(で、500エラー)。
MaxRuns 0 ではなくて、 SpeedyMaxRuns 0 だったとわかったです。 ちなみに上記でも500エラー。 あとは、500エラーの原因は何か、と。
んぢゃ、cp bbs.cgi ナンタラbbs.cgi で複製を作って、 use CGI::Carp qw(fatalsToBrowser); 入れちゃうとか(^-^;) でもってそろそろ眠m(_ _)m
で、さらに、 <IfModule mod_speedycgi.c> ではなくて、 <IfModule mod_speedycgi2.c> だとわかった。 あとは、500エラーの原因さえわかれば。
exit使ったらだめとか
順番にやっていけばいいかと 前提:perlccによる実行形式を削除 1) 1行目を変えるのみ&MaxRunsを1にする(-- -r1) 2) MaxRunsを指定しない 3) mod_speedycgiを使ってみる
-- -r1 があたりのもより。
動いたもより。
今の設定 LoadModule speedycgi_module libexec/apache2/mod_speedycgi.so <IfModule mod_speedycgi2.c> SpeedyMaxRuns 1 </IfModule> で、 <IfModule mod_speedycgi2.c> <Files bbs.cgi> SetHandler speedycgi-script </Files> </IfModule> に設定。 これで、元bbs.cgiをいじることなく、bbs.cgiだけspeedycgi配下に。
みるみるLAがさかってゆく、、、。< ex7
うそみたいに軽くなった。 これで、しばらくようすをみてみよう。
たとえ-r1だとしても、バイトコンパイルのキャッシュが効くとか?
もしかして$ENV{'QUERY_STRING'}でパラメータを渡しているところが初期化ルーチンの最初だけとかじゃ無い? 環境変数を渡すタイミングが初期化時だけだとハマりどころかも。
あとexit前に %Hoge = (); みたいな感じで消去しとかないと-r1じゃないと動かないスクリプトになるという肝。
よかったよかった
speedy_backendのゴミプロセスが残っていたようなので、それらをkillして、 SpeedyTimeout 60 を追加して、httpdを立ち上げなおした。
お、するするって。 ま、いっか。
>>632 の設定する場合、
いうまでもなく、SuExecをやめないとだめでした。
つまり、
User ch2live16
Group ch2
とかにしないとだめ。
# いきなり(たぶん)ファイルロックかからなくって、ぐわわと重くなり、リブート、、、。
で、1行目を変える方法(#!/usr/bin/perl → #!/usr/local/bin/speedy -- -r1 -t60)なら、 SuExec配下になるので、従来どおりで問題ないと。
あ、もちろんその場合は、 #SuexecUserGroup ch2live16 ch2 は、上記のようにコメントアウトで。
ex7見ると、、、。 56485 ch2ex7 131 0 4320K 3680K RUN 0 69:32 68.70% 68.70% speedy_back 96829 ch2ex7 131 0 4316K 3680K RUN 2 184:26 67.48% 67.48% speedy_back 59449 ch2ex7 131 0 4320K 3684K RUN 0 64:19 66.99% 66.99% speedy_back なんか、ぼそってるすね。例のbbs.cgiぼそり現象がそのままきてるのか。 うーん。 そっか、RLimitCPUとか、moduleにすると効かなくなるのね。 Apache側でlimitかけてやらんと、だめなわけね。 設定しよう。 しかし、実際に動かしてみないと、わからんことばかり。
apache2limits_enable="YES" apache2limits_args="-e -t 60" を/etc/rc.confに入れて、Apache再起動でいいのかな。 とりあえず、ex7にて。
>>650 を ex7 live16 live17 に入れた。
やっぱ、ぼそるすね。 16551 ch2ex7 127 0 4320K 3688K CPU2 1 9:37 96.14% 96.14% speedy_back しかたないすね、、、。/etc/login.conf をいじろう。
~/.login_conf でいいのかな。
>>653 だめすね。login(1) でしか参照しないのか。
/etc/login.confに、 # for limiting www user www:\ <TAB>:cputime=60:\ <TAB>:tc=default: を足して、 cap_mkdb /etc/login.conf を実行し、 apache2limits_enable="YES" apache2limits_args="-e -C www" を/etc/rc.confに設定して、apacheをrestartした。
うーむ。
>>655 でも再発。
で、/etc/master.passwd のクラスのところに www と書いてもだめ。
さて、どうすべか。
rc.confとかって再起動しないと有効にならないとか?
portsからapahce2を入れていれば /usr/local/etc/rc.d/apache2.shを読めばわかるが、 上記スクリプトapahce2.shからrc.confを舐めることになっている。 PORTNAME= apache PORTVERSION= 2.0.52 PORTREVISION= 3
リミッターが効かないことでex7の怪我が大きくなったので、 リミッターが効く方法(CGI経由での呼び出し)にスイッチ。 具体的には、ex7のbbs.cgiの1行目を、 #!/usr/bin/perl から、 #!/usr/local/bin/speedy -- -r1 -t60 に変更。
live16/live17 も
>>659 と同様の変更を実施。
live8は、SuExecをやめる工事だけ実施。 bbs.cgiは、perlccもの。
tiger503 ex7 済み tiger504 game10 済み tiger505 news18 済み tiger506 game9 済み tiger507 live16 済み tiger508 live17 済み tiger509 news19 済み tiger510 hobby7 済み というわけで、掲示板のあるtigerはすべてバージョンアップ完了しました。 あとはぼちぼち、blackgoatをやるかな。 すいてる時間にかたっぽずつやれば、たぶんサービス止めないでいけるかと。
ex7 の様子を見る限りでは、
>>659-660 の方法でも、それなりに効果あるのかも。
今日はちょっと夜11時前に事件があったんで、明日にはわかるのかなと。
いいお湯でしたか!少しは疲れがとれましたか? いつもお疲れ様です。 孤独な作業、そして皆が2ちゃんを気持ち良く利用できるように日々努力していただき、ありがとうございます。 がんばってください。 何も出来ないけど、応援しています。
ああっ、FOX ★さんがっ(; ・`д・´)
い い 孤 ← 「 狐 」 じゃないぞ が 何
>>665 でも、FOX ★さんのあちらこちらでの縦横無尽のご活躍も凄いって思っています。
無理なさらないでください。
皆さんのこうした努力があって、この2ちゃんが快適に楽しめるんですね。
ありがとうございます。
FOXさんは、私の何倍も、何十倍も、すごい人ですから。(す)
>>672 root▲ ★さん
そうなんですか、知りませんでした。
それと、大切な専用メモを荒らしちゃったみたいですみません。
黙って見ています。ありがとうございました。
root▲さんの俺様メモを見ていると昔EWSの管理者だった頃の事を思い出す。。。 campas noteを何冊埋めたことか・・・
ここをROMってlogとって、経過を読むと実地の鯖運用記録として使えます。 本にならないかなぁ。 FOX&root▲ ★の、動け動けウゴウゴServer構築運営管理ガイド。 萌え萌えUnixネットワーク管理ガイド風に、お二方をキャラ化して、David氏が黒いメガネ…
676 :
動け動けウゴウゴ2ちゃんねる :04/11/28 00:10:57 ID:T1uf0Euu
>>675 (・∀・)イイ!
おもしろそ。実現キボンヌ
>>676 ダメダメ
ここで実現キボンヌなんて言ってもダメだ
実装キボンヌ
678 :
外野ァァン :04/11/28 00:34:29 ID:vuce9di8
rootくんが2chの鯖管理で培って来た技術を本にして皆に広めてもらいたい 1年毎くらいで毎年発行とかで
>>678 今まで2ch本なんか買わなかったけど、この本なら多少高くても買うぜ!
3000円ぐらいでお願い。
形式は電車男みたいな感じにすれば、校正の手間とかも掛からないのでは。
なんで買ってもないのに、電車男の形式という発言が出てくるんだ?
電車男は本買わなくてもまとめサイトで読めるよ。
ほとんどそのまま、まとめサイトをそのまま紙面に移しただけ、 ですもんね。>電車男
いや、それは知っていたけど、実物見ずに発言したということか。 スレ汚しすまそですた。
3,800円でも売れそうだ。
こいつあやしいなっていう解説本が出るかもしれないし、 出ないかもしれないってだけのことだろ。
>>682 ネットでただで手に入るがインストールCDも売っているFreeBSDと同じなわけかw
厳密には、ネットだと通信費かかるけどな〜。 今は定額制が主流になってきたので、あまり意識しなくなったけど。
本すか。 流れのままに、って感じすかね。 何らかの方法で何かを残したいな、とは思ったりするです。 しかし、実際に出すとなるとなかなか大変だったり。 # ジャパンカップダート @ ex7は微風だった模様。
すべてのtigerサーバに、 ex7/live16/live17と同じ呪文を入れた。 ・SuExecを無効化し、直接ch2XXXXユーザでhttpdを起動 => CGI起動を少しでも軽く ・bbs.cgiをSpeedyCGI化
現状のまとめ cobra (oyster901 = live8) ・SuExecなし、httpdを掲示板オーナのUIDで直接起動 ・perlcc版bbs.cgi ・httpd数896 ・httpdはアイドル時も全数待機 tiger (tiger503 - tiger510 = ex7 game10 news18 game9 live16 live17 news19 hobby7) ・SuExecなし、httpdを掲示板オーナのUIDで直接起動 ・SpeedyCGI版bbs.cgi ・SpeedyCGIは#!/usr/local/bin/speedy -- -r1 -t60 で起動 ・httpd数784 ・httpdはアイドル時も全数待機
質問です 1) SpeedyCGIはPerlを高速化するものですか? 2) bbs.cgi or bbs.cgi がrequire しているファイルが更新されたとき 何かしなければいけませんか?
1)Perlのプロセス起動をへらすので結果的に 2)再読み込みが必要なのでapachectl graceful
>>691 ちと長くなるので、別々に答えます。
まず結論から。
1) Yes
動作原理は後述します。
2) 現在の2chの運用形態なら、bbs.cgiの配布・保守形態は現在のままでよい
2-1)親bbs.cgiがrequireしているファイル、
例えばbbs.cgi主処理部(頻繁に変更される方)が
更新された場合は、特に何もする必要はありません。
なぜかというと、現在の2ちゃんねるでのSpeedyCGIの運用形態が
「バックエンドエンジン毎回起動モード(-r1)」だからです。
理由は後述します。
2-2)親bbs.cgiそのものが更新された場合は、
>>659 にあるように、
bbs.cgiの1行目を#!/usr/bin/perlから
#!/usr/local/bin/speedy -- -r1 -t60に変更する必要があります。
ただし、急いで変更しなくてもSpeedyCGIのパフォーマンスにならないだけで、
従来のPerlのパフォーマンスで動き続けるため、運用にすぐに支障が出るわけではありません。
現状、親bbs.cgiにはめったに更新がかからないため、
親bbs.cgiに変更がかかったのを私が知ったら、その都度作業するというポリシーで、
当面はいけると考えています。
# というか、想定質問っす(w。
## 後述は、めしくってから書きます。
ちなみに、bbs.cgi主処理部が更新された場合に ちゃんとそれが即座に反映されることは、実地に確認してありますです。はい。
bbs.cgi がこれによってかなり美味い具合になってきたとすると、 もう一つほとんど更新されないcgiがあるわけですが、 そっちはどのような方針がいいんですかね? 1) Perl にして同様にSpeedy化する。 2) C のまま、Apache のモジュール化する。 2) の方が効果があると思ってはいますが、 実は 1) でも 2) の90% くらいの効果が望めるので 2) にするとか? read.cgi ですが、
今既にCで書いてあるもので、かつコンパクトなプログラムなので、 私は 2) がよいと考えていますです。 めざす方向は、mod_readがいいなと。 1)にして効果を上げる(SpeedyCGIの本来のパワーを発揮させる)ためには、 それなりにきちんと(Per作法l的に)プログラミングする必要があるようです。 今のbbs.cgiはいわば「SpeedyCGIを使ううまみの1割も使っていない」状況です。 それも、あわせて後述を。
んじゃ 若さの暴走ということで mod_read に挑戦してみますかー と、
以下はにわか勉強なので、間違い・不足な点はご指摘いただけるとたすかります ] ・SpeedyCGIの動作原理 SpeedyCGIは、フロントエンド部とバックエンドエンジンに分かれています。 フロントエンドは、ApacheモジュールまたはCGIプログラム(/usr/local/bin/speedy)として呼ばれます。 フロントエンドはバックエンドエンジンがいなければ起動し、Perlプログラムをプロセス間通信で バックエンドエンジンに渡します。 バックエンドエンジンはPerlプログラムを*実行前に*コンパイルし、できた中間コードをメモリ上に展開し、 それを実行します。 つまり、Perlをインタプリタで実行せず、コンパイル後のバイナリを実行するようになるため、 その分実行が高速になります(効果1)。 その後、デフォルトではバックエンドエンジン側の処理が終わっても、 コンパイル後のバイナリコードは開放されることなくバックエンドプロセスのメモリ上に残り、 次に同じプログラムのリクエストをフロントエンドから受けた場合、 cgiプログラムが更新されていなければ (ここで本体cgiの時間をチェックし、更新されていれば自動的に再読み込み&再コンパイル)、 同じバイナリコードを、そのまま再利用します。 つまりデフォルトでは、2回目以降はバックエンドエンジンの再起動なし、 再コンパイルなしでそのままバイナリコードが動きます。 ということで、動作がとても高速になります(効果2)。 しかし、この場合Perl側でコードの再利用(主に変数関連)を考慮した、 行儀の良いコードを書く必要があるため、 場合によっては、Perlプログラム側を行儀の良い形に書き直す必要が出てきます。 で、bbs.cgiは残念ながらこれに該当したため、デフォルトの状態では動かなかった。 (続く)
(続き) これを避けるために、SpeedyCGIのオプションとして、 バックエンドエンジンの再起動インターバルを指定することができるようになっています。 これが、#!/usr/local/bin/speedy -- -r1 -t60 の -r1 のところです。 ここで1を指定してあるため、1回ごと(つまりフロントエンドが起動されるたびに、毎回)、 バックエンドエンジンを起動しなおすことになります。 つまり、上記の(効果2)を捨てることになるわけです。
といったところが、SpeedyCGIの私の理解です。
で、量産型bananaにもSpeedyCGIを入れていただけると、
全部のマシンのbbs.cgiを
#!/usr/local/bin/speedy -- -r1 -t60
にできるので、bbs.cgiの管理が楽になったりするです。
>>697 おおっっ。
もったいなかと、
なお、デフォルトのモードの場合、requireしているほうの子供Perlプログラムが更新された場合には、
自動的には更新を検知できないため、
その場合には
>>692 にあるようにApacheをリセットするか、
親cgiをtouchする必要があります。
# 2ちゃんねるの場合「毎回起動モード」なので、たまたましなくてもいいと。
>>701 ですよ(ο・д・)(・д・`ο)ネー
bbs.cgiを、具体的にはどう改良すればいいんだろうか。
>>638-639 あたりが答えの一部?
>>704 てなわけで、今日はなんだか記念日みたいです。
bbs.cgi の speedy化の効果2をねらう改造の為に サブドメインが必要な気がしまーす read.cgi も一緒にやるか、 やっぱ明日、tiger に一個サブドメイン増やそうぜ
>>706 了解です。
今日は、いい気分で寝られそうな気がするですよ。
708 :
◆tuboBGQODY :04/11/29 11:15:23 ID:8+wqgpXt
電子雑誌だったらできそうな悪寒>ここのスレのログっぽいの
>697 :FOX ★ sage :04/11/29 01:00:06 ID:??? >んじゃ 若さの暴走ということで >mod_read に挑戦してみますかー ↑これ、笑うところ?
たのしみ たのしみ
いろんな意味でワクワク……。
ついでに鯖争奪戦論争も電子ブック化して(ry サブタイトル募集ちう
プロジェクトXあたりでやって欲しいよね。
716 :
◆tuboBGQODY :04/11/29 17:57:06 ID:8+wqgpXt
サーバ争奪戦は04/08/15(tiger509,510)からはやってないですな
争奪戦なんかちゃねらーの一部しか読まないだろ・・・
兄貴、かっこいいぜ兄貴。
>>719 金曜日深夜域を見ると一目瞭然で砂。
勝ち組宣言楽しみにしてます(素
722 :
いす(仮) :04/11/30 23:04:44 ID:8smqgQRt
bbs.cgi改造するなら、そろそろ古い機能はとっぱらっても良いような。 >>の数チェックとかはもういらないような。
むしろ、>>nnでリンクする機能を、.datに直接書き込むのではなく read.cgi/r.i及び、bbs.cgiでhtml/*.htmlを作成時に変更したら良いのでは。 以前実際の各種板の全.datから計算したら、 通常の板でおよそ10%程度、AA系の板で3%程度、.datのサイズが小さくなるはず。 実況系はその間くらいかな。 専用ブラウザの対応は問題ないはず。 というのは、外部実況板などで>>nnのリンクは.datに入ってないところも多々あるから。
少しでもdatを小さくしようと、あえて>を1個にしてる人もいるよね。 2chブラウザなら全く問題ないし。 # 2chブラウザへの移行を促す効果も(Webブラウザだと不便に) # いわゆるh抜きも同様の効果があるかな、と。
726 :
動け動けウゴウゴ2ちゃんねる :04/12/01 09:44:05 ID:7Wx8YcmW
>>724 最小は>724らしい。
>は実体参照に書き換えられて格納されるとか。
全角打ち込むのマンドクセ
流れ的にスレ違いだぞ read.cgiかbbs.cgiのスレでやれ
>>724 ># 2chブラウザへの移行を促す効果も(Webブラウザだと不便に)
># いわゆるh抜きも同様の効果があるかな、と。
ここにレスするのも何だけど、そういうのはProxomitronで簡単にフォローできるから
初心者以外は促せないかなぁ…
730 :
root▲ ★ :04/12/01 14:46:17 ID:???
cgiの開発・実験用のバーチャルホストですが、さてどこに作りますかね。 特に問題なければ、game9 = tiger506 あたりにしようかなと。 名前は dso.2ch.net でいいのかな。
ほいほい
では作業行ってきます。 出来次第、儀式→掲示板システム入れ込みへと。
すんませーん、SpeedyCGIを入れたところはLoad Averageが低くなるけど、 LAがサーバーの実際の負荷と比べて恐ろしく低く表示されるから、 LAが低くても安心できないって事ですか?
>>733 書き込み(bbs.cgi起動)の同時起動が抑制されるので、負荷が低くなる、ってことです。
つまり、bbs.cgiを産児制限することになるから、本当に負荷が低くなると。
# 特にlive系などは、負荷の8割が書き込みだと思われ。
つまり、システム的には落ちなくなるけど、
もう少し書き込みパフォーマンスが出せるようにしたいなと。
735 :
root▲ ★ :04/12/01 15:13:07 ID:???
では、儀式行きます。 +dso.2ch.net:206.223.152.30 を、DNSに追加お願いします。
736 :
root▲ ★ :04/12/01 15:16:56 ID:???
これから、mod_cgidsoを入れる工事に入ります。 (DNSには登録いただいてOKです)
UA が上がりっぱなしの時はどうすればいいのか・・・
738 :
root▲ ★ :04/12/01 15:21:38 ID:???
すみません、 Uric Acid です
740 :
root▲ ★ :04/12/01 15:33:14 ID:???
>>736 の仕込み終わりました。
dsoのユーザのread.cgiと.so拡張子が、DSOの対象となります。
SpeedyCGIは既に導入済み。
dso.2ch.net に板を作るべくいろいろ転送中。。。
直ったはず。 同一ホストに2個以上バーチャルホストを切ると、 UIDの都合によりそのままではSuExecなしにはできないみたい。 ということで、game9もSuExecありにしました(運用上は問題ないです)。
>>747 こっちは、SuExecじゃないモード(httpdのオーナー)で動きますんで。
というかこれで、i386/amd64の両方で動くことが確認できたと。
まずはめでたいです。
>>747
dso攻撃
なんとなく myanmar にしてみる。
運金を移転させればいい
安直にoperate3 もっと安直にdso
dso、土葬・・・・・。縁起でもない・・
なぜミャンマー?
むしろ、どぞー.にちゃんねっと、
-M32は結局流れを阻害するので、やめ。 -b1048576 (CGIからのPOSTの時のバッファをデフォルトの8倍にする)したら、ex7がとっても好調に。 しばらく見て調子いいようなら、これにしてみよう。 ただしlive8の変更は、本日が落ち着いてから。
SpeedyCGI環境では、ある「壁」までは、割と軽く動くみたい。 その壁にぶち当たると、だめと。
今のhttpdの並列数は、768〜896あたりがせいぜい。 1024だともう苦しくて、それより大きいと「どーん」に耐えられないと。 大きくしても、bbs.cgiが詰まるだけ。
りょうかいですー read.cgi(DSO味) の実験は live8 に触らなくてもよくなってからにします、 来年にでもまた、
>>765 そですね。
live8のbbs.cgiは今の(8.01+)でいきますか。
で、仕込みをdso.2ch.netでしっかりやる方向で。
915 名前:root▲ ★[sage] 投稿日:04/12/01 23:15:49 ID:???
ex7は、httpdの並列数を896に戻した。
これ以上増やすと(少なくとも1280とかにすると)、
bbs.cgi(speedy_backend)が増殖しまくって、さっきみたいに結局意識不明に。
ex7も、入れたら768に戻しておこう。
カキコ遅くても、今のままだとこれ以上は、無理な模様。
>>767 おっ。見てみるか。
いきなり > お粗末なプログラミングで、お粗末なパフォーマンス きびしいのう。 といってもこれは、私だけで何とかできる問題でもないわけで。 dsoのbbs.cgiスレに期待しよう。
ざっと読むと、泣けるなぁ。書いてあることはわかります。 直感ですが、とっても、該当しているような気が。 dsoのbbs.cgiスレかここのbbs.cgiスレあたりで、話題振ってみていただけると。
さて、 ・httpd起動数はもうこれ以上は増やせない (tiger: 768, cobra: 896)。 ・「スロットいっぱい」「bbs.cgi詰まり」が観測された。 kqueueステータスだったので、DNSまわりの結果待ちな予感。 => DNSサーバの再チューニングが必要か。 => 特にBBS/BBQ/DNSキャッシュサーバ。 ・mod_cgidsoは、パフォーマンスを確実に底上げしている。 read.cgiは、この路線で進むのが当面、正解と思われる。 ・やっぱりbbs.cgi、こいつを何とかしなきゃ。 他に何があるかな。
BBSのDNS側ログをチェック中。 明らかにBBSシステムのDNS側、変でしたね。 この間、ひとつも処理できていない。 (時間はPST) 2004-12-01 05:06:03.757482500 cedf94fa:201d:2913 + 0001 1101906363.4977.60.40.234.32.0.40.1092895397.loveho.sakura02.bbspink.com.bbs.bbs.2ch.net 2004-12-01 05:45:57.994422500 cedf9837:c3f7:d610 + 0001 1101906363.66646.220.102.118.141.0.19.1101897431.dancesite.live17.2ch.net.bbs.bbs.2ch.net
日付変わったら、live8のbbs.cgiを他と同じものにしよう。
>>771 で、「スロットいっぱい」は、「bbs.cgi詰まり」により、惹起された模様です。
つまり、BBS処理がふんづまりになることによってbbs.cgiが滞り、
それによって詰まってしまった。
BBQは詰まっても大丈夫なように若者が対応したはずだけど(実験もした)、
BBSはどうなんだろう。
banana238 = BBS/BBY/BBX のdjbdnsを強化版(make WITH_PERSISTENT_MMAP=yes)に更新した。 おかしかったら、指摘よろしくです。
oyster243 = BBQ(niku) のdjbdnsも、強化版に更新。
cobra2245 = BBM のdjbdnsを同様に更新。 これで、更新はひととおりできたはず。 BBSがbananaではもたない、、、ということは、あるのか、ないのか。
「絶対に持つ」を前提に話すのが吉と思われ、
さて、めし、くってくるです。腹が減ってはなんとやら。 落ち着いたらもいっかい今日いじった掲示板cobra/tigerサーバ群の設定を見直しておこう。 設定もれとかがあると、いまいち。
>>781 ふむ。わたしもそう思っています。< BBS
BBQがbananaではもたなかったのは、DBがでっかかったから(これは明確)。
今のBBSはDBを持ってないので(データがないことしか返していない)ので、
もちろん、もつはずという前提です。
その前提で、サービスが停止した原因を考える必要があるとおもわれ。
# めしめし。
ちなみに今のBBQデータ。でかっ。 %ls -l data -rw-r--r-- 1 ch2bbq ch2 73286705 Dec 1 07:20 data %wc -l data 5158061 data
bbs.cgi での各処理の順番はどうだったかな、、 BBQ -> BBX -> BBS -> BBY だったかな
>>777 >BBQは詰まっても大丈夫なように若者が対応したはずだけど(実験もした)、
>BBSはどうなんだろう。
ここでのお題目は、その「つまり」を起こさないことかな。
起った場合の逃げコードはサザン ★君が暇になったら
ぼちぼちやってもらうという事にして、
BBQ -> BBX -> (BBY) -> BBS だった。
Load Average @ stats.2ch.net 2004/12/01 21:00:00 LA= 9:00PM up 186 days, 22:19, 0 users, load averages: 0.00, 0.06, 0.11 2004/12/01 21:10:00 LA= 9:10PM up 186 days, 22:29, 0 users, load averages: 0.08, 0.10, 0.08 2004/12/01 21:20:00 LA= 9:20PM up 186 days, 22:39, 0 users, load averages: 0.20, 0.18, 0.12 2004/12/01 21:30:00 LA= 9:30PM up 186 days, 22:49, 0 users, load averages: 0.06, 0.12, 0.11 2004/12/01 21:40:00 LA= 9:40PM up 186 days, 22:59, 0 users, load averages: 0.17, 0.10, 0.08 2004/12/01 21:50:00 LA= 9:50PM up 186 days, 23:09, 0 users, load averages: 0.25, 0.15, 0.10 2004/12/01 22:00:00 LA=10:00PM up 186 days, 23:19, 0 users, load averages: 0.06, 0.12, 0.10 2004/12/01 22:10:00 LA=10:10PM up 186 days, 23:29, 0 users, load averages: 0.07, 0.10, 0.08 2004/12/01 22:20:00 LA=10:20PM up 186 days, 23:39, 0 users, load averages: 0.05, 0.11, 0.08 2004/12/01 22:30:00 LA=10:30PM up 186 days, 23:49, 0 users, load averages: 0.02, 0.05, 0.06 2004/12/01 22:40:00 LA=10:40PM up 186 days, 23:59, 0 users, load averages: 0.04, 0.09, 0.08 2004/12/01 22:50:00 LA=10:50PM up 187 days, 9 mins, 0 users, load averages: 0.29, 0.32, 0.20
LA 見る限りは、特に負荷が上昇しちまったようには見えず、
上がるとしたら、負荷じゃないですね。 BBQがだめぽになった時も、LAがあがらなかったです。 プロセスが増えるわけじゃないから。 BBQの時はI/Oがつらくなって、処理がふんづまりました。 LAは低いままで、DNS問い合わせに答えられなくなったと記憶。 てなわけで、今送信側(news18とかnews19)のDNS問い合わせログをチェック中。
1行目の「負荷」は、LAと読み換えてくださいです。
>>791
ということは、 DNS問い合わせのたびに呼ばれるプログラムは特に問題ないということかな? どんどん呼ばれてもどんどんはけて行く or 一個しか起動しない。
>>793 そっち側が変になっても、DNS側がブロックしないように組んであるはずです。
# いちおう、確認してみます。
>>778 の順番に処理しているんで
呼ばれる回数は BBQ > BBS ( >>> BBX >>>>>>>>>> BBY) です
news18の問い合わせログを見ました。 2004-12-01 05:06:06.098103500 tx 0 1 1101906365.98088.0.0.0.0.0.57.1101628087.anime.news18.2ch.net.bbs.bbs.2ch.net.maido3.com. maido3.com. cedf93fe cedf94fe 2004-12-01 05:06:06.102803500 nxdomain cedf93fe 2560 1101906365.98088.0.0.0.0.0.57.1101628087.anime.news18.2ch.net.bbs.bbs.2ch.net.maido3.com. これは「ないよ(nxdomain)」の応答があるのに、 2004-12-01 05:06:13.843026500 query 2292275 7f000001:4d75:fe65 1 1101906373.98241.0.0.0.0.0.94.1101743825.mnewsplus.news18.2ch.net.bbs.bbs.2ch.net. この問い合わせに対する、BBSのDNS側からの応答(nxdomain行)がありません。 で、このあと、BBSについてその状態がずっと続く。 つまり、 ・問い合わせ側システムは正常 ・でも、BBSのDNS側からの返事がなかった ということになります。 同じサーバ(banana238)で動かしている別のDNS(BBX/BBY)は、 該当時間、どうだったのかな。
訂正
>>788 の順番に処理しているんで
呼ばれる回数は BBQ > BBS ( >>> BBX >>>>>>>>>> BBY) です
>>796 BBXとBBYはその時間無事動いていたことを確認しました。
また、BBQも同様に確認しました。
おかしかったのは、BBSだけか。
んんん? それはいったいどういうことじゃ? なぞだ、
しかも、live8やex7が変だった時間と、一致するような予感。 というよりひょっとすると、BBSが変になったことで、live8やex7もつられて落ちた、 というのが、正しいような気もする。
ちなみに BBS呼び出し側(bbs.cgi)には、タイムアウトを検出する処理はいってます
マツケンサンバが始まったのが22:05:00 ころですね。
その直後にlive8は落ちました。ex7はもうちょっとあとかも。
>>800 その可能性は、なんかあるかも、、
BBSが動いてない時間に、どの鯖でもbbs.cgiが微妙に動作が遅かったですね、、
入ってましたか。つまりブロックは数秒(何秒でしたっけ)ですむと。 つまり、他のサーバは「あれ?」ぐらいで、済むわけか。 「数秒のブロック」が雪ダルマ式に影響が出るのは、 その時カキコが激しかったサーバということだとすると、 ex7とlive8だけ壊滅するのは、ありうることかも。 live8とex7のシステムログを、緻密にあたってみます。
>>802 とすると、、、。
ex7/live8からものすごいDNSアクセスがBBS側のDNSに来て、
BBS側が不調になり、
bbs.cgiの滞留が起こりはじめ、
それが顕著に起こったex7/live8が、ブロックプロセス過多で壊滅した
というシナリオは、ありうるわけだ。
その部分のコード { my $BYTES = length($FORM{'MESSAGE'}); my $BHOST = "$NOWTIME.$$.$ENV{'REMOTE_ADDR'}.$NEWTHREAD.$BYTES.$FORM{'key'}.$FORM{'bbs'}.$ENV{'SERVER_NAME'}.bbs.bbs.2ch.net"; eval{ alarm(3); my $YACHO = gethostbyname($BHOST); alarm(0); }; alarm(0); if($@ =~ /timeout/){ last; } }
ちゃんと動いていると思うんですが BBS だけ止めてみるなんてこと出来ますか?
タイムアウト処理が正しく動いているか検証してみよう。
時間決めて、しばらく止めてみろということですか。 では、1:45から2分、BBSだけ止めてみます。
これから止めます。< BBSのDNS
今、BBSだけ止まっている状態。
5秒ぐらい? ディレイかかりますね。
書き込みが多いサーバ(ex7)の様子をチェックしてきます。 まだ、BBSは止めています。
ですね、 これと同じことが当該時間帯に別のサーバで起ったという記憶があります
すごいことになってる。 LA上がってないけど、ブロックばかり。 PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND 631 dnscache 98 0 32868K 32172K select 0 104:59 5.81% 5.81% dnscache 11196 ch2ex7 4 0 7112K 6336K kqread 2 0:01 5.08% 2.00% speedy_back 11051 ch2ex7 4 0 7092K 6320K kqread 0 0:00 3.24% 1.86% speedy_back 11045 ch2ex7 4 0 7080K 6376K kqread 0 0:00 3.15% 1.81% speedy_back 11037 ch2ex7 4 0 7088K 6316K kqread 0 0:00 2.96% 1.76% speedy_back 11301 ch2ex7 4 0 7096K 6324K kqread 0 0:00 12.26% 1.71% speedy_back 11330 ch2ex7 4 0 7068K 6304K kqread 3 0:00 35.00% 1.71% speedy_back 11302 ch2ex7 4 0 7092K 6320K kqread 2 0:00 11.56% 1.61% speedy_back 11310 ch2ex7 4 0 7088K 6320K kqread 1 0:00 11.56% 1.61% speedy_back 11041 ch2ex7 4 0 7092K 6320K kqread 0 0:00 2.71% 1.61% speedy_back 11043 ch2ex7 4 0 7092K 6320K kqread 0 0:00 2.71% 1.61% speedy_back 11046 ch2ex7 4 0 7060K 6292K kqread 0 0:00 2.81% 1.61% speedy_back 11263 ch2ex7 4 0 7100K 6316K kqread 3 0:00 6.02% 1.56% speedy_back 11319 ch2ex7 4 0 7060K 6292K kqread 0 0:00 15.89% 1.51% speedy_back 11253 ch2ex7 4 0 7068K 6300K kqread 0 0:00 5.65% 1.46% speedy_back 11039 ch2ex7 4 0 7092K 6320K kqread 0 0:00 2.47% 1.46% speedy_back 11316 ch2ex7 4 0 7092K 6320K kqread 0 0:00 10.50% 1.46% speedy_back 11296 ch2ex7 4 0 7092K 6324K kqread 3 0:00 7.53% 1.37% speedy_back 11292 ch2ex7 4 0 7096K 6324K kqread 0 0:00 7.26% 1.32% speedy_back 11067 ch2ex7 4 0 7064K 6296K kqread 1 0:00 2.30% 1.27% speedy_back 11217 ch2ex7 4 0 7064K 6296K kqread 0 0:00 3.50% 1.27% speedy_back 11062 ch2ex7 4 0 7064K 6360K kqread 2 0:00 2.22% 1.27% speedy_back 11305 ch2ex7 4 0 7092K 6320K kqread 0 0:00 9.10% 1.27% speedy_back 11073 ch2ex7 4 0 7080K 6312K kqread 1 0:00 2.22% 1.22% speedy_back 11247 ch2ex7 4 0 7060K 6296K kqread 2 0:00 4.13% 1.22% speedy_back 11171 ch2ex7 4 0 7080K 6316K kqread 1 0:00 2.65% 1.12% speedy_back 11152 ch2ex7 4 0 7080K 6380K kqread 3 0:00 2.49% 1.12% speedy_back
なんか重いと思ったらまた遊んでやがんなw ま、原因がわかったらはよ直してね
BBSあげました。 ex7のブロックは解消しました。
体感では、さきほどBBSが止まってた時と ほとんど同じくらい(2〜3秒)の引っかかり感がありますね。
BBSの戻りは一切チェックしなくてもいいので、 bbs.cgi側のディレイを「なし」にできると、うれしいかも。
alarm(3); を alarm(0); とかにすればいいのか? それとも alarm(1); が最小なのか?
> 指定した秒数(実際は 1 を引いたもの)が経過した後、 SIGALRM をプロセスに伝える。 > つまり、 `alarm(15)' はそれから 14 秒以上経ったある時点で SIGALRM を起こす。 らしいので、alarm(1); でディレイ0になるんじゃないかな。
ほぅほぅ やってみよう、
あ、そういえば、 bbs.cgi 配布サイトに、live16 と live17 も加えておいてくださいです。 これらは FreeBSD 5.3R への更新に伴い、 perlcc バージョンの使用をやめました。 今後も、perlccバージョンにする予定は当面ないです。 live8 もさきほど perlcc をやめましたが、 私の判断で、perlcc版とスイッチするかもしれないので、 当面従来どおり配布ホストには、入れなくてよいです。
alarm(1);のbbs.cgi に全サーバ置き換えた
>>823 live16,live17 りょうかいです
bbsにはあいかわらず、query来ています。 このカキコの後で、BBSを再度止めてみます。
BBS止め中、、、。
ちょっと引っかかる感じはありますが、さっきよりいい感じですね。
live16 , 17 も元々配られているようです
>>829 了解です。
ex7の様子を確認してきます。
ブロックは、してるみたい。< ex7 631 dnscache 97 0 32868K 32172K select 1 105:17 6.10% 6.10% dnscache 25373 ch2ex7 4 0 7072K 6280K kqread 0 0:01 14.80% 2.69% speedy_back 25418 ch2ex7 4 0 7068K 6308K kqread 2 0:00 21.01% 2.00% speedy_back 25323 ch2ex7 4 0 7060K 6268K kqread 2 0:00 5.62% 1.66% speedy_back 25393 ch2ex7 4 0 7068K 6284K kqread 0 0:00 11.91% 1.66% speedy_back 25412 ch2ex7 4 0 7060K 6292K kqread 3 0:00 17.43% 1.66% speedy_back 25388 ch2ex7 4 0 7060K 6272K kqread 3 0:00 11.56% 1.61% speedy_back 25398 ch2ex7 4 0 7060K 6268K kqread 0 0:00 11.56% 1.61% speedy_back 25372 ch2ex7 4 0 7060K 6272K kqread 0 0:00 8.34% 1.51% speedy_back 25317 ch2ex7 4 0 7060K 6340K kqread 0 0:00 4.96% 1.46% speedy_back 25333 ch2ex7 4 0 7060K 6272K kqread 0 0:00 5.46% 1.42% speedy_back 25311 ch2ex7 4 0 7060K 6276K kqread 1 0:00 4.79% 1.42% speedy_back 25379 ch2ex7 4 0 7060K 6344K kqread 0 0:00 7.80% 1.42% speedy_back 25383 ch2ex7 4 0 7060K 6268K kqread 1 0:00 7.80% 1.42% speedy_back 25394 ch2ex7 4 0 7060K 6340K kqread 0 0:00 9.45% 1.32% speedy_back 25400 ch2ex7 4 0 7064K 6268K kqread 1 0:00 8.75% 1.22% speedy_back 25262 ch2ex7 4 0 7060K 6272K kqread 0 0:00 2.98% 1.17% speedy_back 25260 ch2ex7 4 0 7064K 6344K kqread 1 0:00 2.85% 1.12% speedy_back 25054 ch2ex7 4 0 7096K 6292K kqread 3 0:01 1.57% 1.07% speedy_back 25264 ch2ex7 4 0 7060K 6268K kqread 0 0:00 2.73% 1.07% speedy_back 25340 ch2ex7 4 0 7064K 6268K kqread 2 0:00 4.14% 1.07% speedy_back 25435 ch2ex7 4 0 7060K 6296K kqread 1 0:00 22.00% 1.07% speedy_back 25348 ch2ex7 4 0 7060K 6272K kqread 0 0:00 4.19% 0.93% speedy_back 25297 ch2ex7 4 0 7064K 6276K kqread 0 0:00 2.66% 0.88% speedy_back 25280 ch2ex7 4 0 7060K 6268K kqread 0 0:00 2.42% 0.88% speedy_back 25350 ch2ex7 4 0 7060K 6272K kqread 2 0:00 3.97% 0.88% speedy_back 25271 ch2ex7 4 0 7060K 6272K kqread 0 0:00 2.29% 0.83% speedy_back
>>821 これ、perl alarmで検索して一番上のところにそう書いてあったんだけど、
ほかのところはどこ見てもそう書いてないなぁ、、だいじょぶだべか、
BBSを再度動かしました。 ex7のブロックは解消しました。 遅延なしにはできてないみたいですが、さっきよりは、改善されたです。
live8 , ex7 が落ちたのは 直接的には BBS の返事がないから処理が貯まりに貯まって落ちたと、 元々 live8 , ex7 は物凄い書き込み数だと言うことが原因の一端であると、 しかし、根本的には何が起ったかというと BBSがなぜか応答しなくなったと なのに不思議なのは、同じサーバにある別のもの BBY 等は問題なく動いていたと 質問 同じサーバ内で BBS だけがぽしゃる事なんてあるんですか?
投げっぱなしで応答をまったく期待しない場合の
コーディング方法募集中です (Perl
>>805 )
>>835 BBS担当、BBY担当、BBX担当のDNSサーバは全部別プロセスなので、
ありえますね。というか、全部がぽしゃらないようにしてあるともいえます。
>>836 具体的には gethostbyname() の結果がDNSから来なくても、
次に進んでほしいということですね。
>>837 なるほど、
ということは、サーバの負荷というよりも BBS(DNS)の限界?
>>839 それを疑っています。
その時間だけBBSのログがないのです。まったく「すぽーん」と。
まるで、サーバそのものがいなかったかのように。
しかし、djbdns+daemontoolsで作ってあるので、
プロセスがいなくなっても立ち上がるし、
サービスダウンには、とりわけ強いはずなんですよ。
すくなくともこんなふうにサービスがいなくなることは、これまで一度もなかった。
banan238の他のシステムログもあさっていますが、
今のところ不審なものは、発見できていませんです。
BBS はどれくらいコールされているかというと、、、 一日で 150万〜180万 ピーク時で一分間に・・・ どれくらいでしたっけ? 1,000 くらい?
ぐおっ 2,400/min つまり 24ms毎にリクエストがあると、(平均ですが) ぱっと見、それくらいいけそうな数字ではあるんですけど、
1分ごとだと3000〜3500かな? 夏〜秋ごろに、1分ごとのデータをグラフにしてたことがあるんですけど、 その時も記憶に残ってる限り最高で3500くらいでした。
ん? 計算変かな? 35000/min だとすると 17ms 毎くらいか
もう二桁くらい小さい値で動くと思うんですけどね < DNS (単なる勘です)
で、いけない数字とは思えないんですよ。
DNSコンテンツサーバ側って、数千query/secぐらいは、さばけるはずなんです。
あと、今日やったMMAPの手術(
>>778-780 )で、
さらに30%らいは強化されているはず。
こちらで別の機会に実験した値でも、
DNSのコンテンツサーバ側は数千queries/secまでは問題なく動く、
という結果が出ています。
>>847
初めての経験ですからねぇ 「たまたまだった」という結論にでもしますかねぇ 二度目があったら・・・そんときに再度考える?
BBSが動いていない現象自体はしょっちゅうありますけどね、、 確かにこんな長い時間動かなかったのはめずらしいけど
今日のところは、そうしておきたいかも。
>>850 DNSサーバ側を緊急強化したので、これで様子を見たいかなと。
今月は、機会が連日連夜あるに違いないわけで。
# うへー、明日朝早いんだよなぁ。
げっ
そういえばそうか?
たまたまじゃないのか?
DNS 自体は返事していて、単に数え漏れが発生しているということではない?
>>851
>>851 しょっちゅうあるのは、いまいち、、、かも。
DNS側がブロックしないように、ちゃんとなってるかちょっと見てみます。
>>853 んまぁ、、確かに他の止まってる時とは明らかに動作が違ってたですからねぇ。
いつもは数え漏れなのかもしれませんねぇ。
そうかも。いや、そうだべ。うん、きっとそうだ!
しかーし 限界を拝めるとは幸せなことで、
個人的には、ネットワークのチューニング問題な気がとってもするです、、、。
PIE の?
>>860 ではなく、banana238のです。
# netstat -s -p udp
udp:
361330042 datagrams received
0 with incomplete header
0 with bad data length field
8 with bad checksum
327 with no checksum
152972 dropped due to no socket
125983 broadcast/multicast datagrams dropped due to no socket
9072993 dropped due to full socket buffers
0 not for hashed pcb
351978086 delivered
352298516 datagrams output
今BBS止めてたんで、この値そのまま信用できないところがありますけど。
今netstat -z でカウンタをリセットしたんで、 この後様子を見てみます。 ドロップパケットとかが出てるようだと、 ネットワーク系を何かチューニングしないと、いかんかなと。 udp: 212 datagrams received 0 with incomplete header 0 with bad data length field 0 with bad checksum 0 with no checksum 0 dropped due to no socket 0 broadcast/multicast datagrams dropped due to no socket 0 dropped due to full socket buffers 0 not for hashed pcb 212 delivered 212 datagrams output
DNSはUDPなんで、具体的には、 # netstat -s -p udp udp: 1996 datagrams received 0 with incomplete header 0 with bad data length field 0 with bad checksum 0 with no checksum 0 dropped due to no socket 0 broadcast/multicast datagrams dropped due to no socket 0 dropped due to full socket buffers 0 not for hashed pcb 1996 delivered 1996 datagrams output の、droppedなんちゃらのところがカウントアップされるようだと、 いまいちですね
各個のサーバを強化し 台数も増やすと、、、 土台が小さく感じ始めるということかしら、 当然なんですけどもね、
>>863 それを _serviceに吐き出しておくとか、
皆で観察 !
>>864 それは、多分にあるかなと。
今、2ちゃんねるで動いているDNS系の仕組みはこんなかんじです。
おおむね、上から負荷が大きい順。
・dnscache
量産型bananaからのDNS問い合わせを処理
cobra (oyster243)
・BBQ
BBQチェック、投稿毎に呼び出し、巨大DB参照
cobra (oyster243)
・BBS
野鳥の会、投稿毎に呼び出し、DB参照なし
banana (banana238)
・BBM
携帯版BBQ、携帯からの投稿で呼び出し、DB参照
cobra (cobra2245)
・BBX
Rock54、広告っぽい投稿毎に呼び出し、DB参照
banana (banana238)
・BBY
ヘッドライン&スレ立てチェック、スレ立て毎に呼び出し
banana (banana238)
もっと書き込めるようにスレ保持数さげて(ex7) 現象が顕著に現れるようにしてみよう。
楽すみ〜
Dropped Due to No Socket 受け取った UDP データグラムのうち、宛先ソケット・ポートが開かれなかった数。 結果として、「ICMP Destination Unreachable - Port Unreachable」という メッセージが送信されます。ただし、 受け取った UDP データグラムがブロード キャスト・データグラムである場合は、ICMP エラーが生成されません。 この値が大きい場合は、アプリケーションがソケットをどのように処理しているかを調べてください。 port unreach か。 いまいちな予感。
処理が追いついてないのか、、、。 BBQはでっかいDBをrbldnsでmmap()してるからなぁ。 mmap() の頻度をもっとまばらにしてみるです。
877 :
動け動けウゴウゴ2ちゃんねる :04/12/02 03:32:04 ID:d54uc42S
ちょっと狼のスレ数減らさないでよ 大体ハロプロって50人くらいメンバーいるから それぞれのカップリングスレだけでも50×50で2500は必要なんだし 各メンバーのファンスレ数種類にアンチスレ数種類もひつようだし 最低3000は必要だよ
BBQのdjbdnsは強化型になっていなかった(portsが古かった)ことが判明。 再度手術するです。
人が多い所はスレ保持数2000くらいでまわせるような感じにして欲しい
>>878 をやりました。
これからbbqのnetstatのカウンタをリセットします。
で、すみませんがスレッド保持数の話は、別のところでおながいします、、、。
狼をどうぞ沢山増やしてあげてください VIPは300くらいでいいです 落ちても誰ひとりとして気にしません
882 :
動け動けウゴウゴ2ちゃんねる :04/12/02 03:39:47 ID:I7LdyoTt
883 :
動け動けウゴウゴ2ちゃんねる :04/12/02 03:40:42 ID:iObBD7Gi
狼なんてイラネーヨ
884 :
動け動けウゴウゴ2ちゃんねる :04/12/02 03:41:22 ID:IvW8Mr+1
VIPER一同より 我々はFOX ★がどんなに理不尽な仕様にしようとも受け入れて生きていきます
>>880 とりあえず、これで、しばらく様子見ですかね。
>>887 そっすね、、、。
BBQ側のカウンタが微妙にいやんな感じなのが、ちと気になるです。
でもさすがに今日はもう寝ないといかんので。
tigerサーバ/cobraサーバのspeedycgiを、バッファ拡張版にした。 ( #!/usr/local/bin/speedy -- -r1 -t60 -b1048576 ) 今日は、ここまでかなと。
流れそうだから、もっかいおれさまメモ。(
>>767 )
意識なくなってきたんで、おやすみなさい。
2004/12/02 04:05:00 udp: 155591 datagrams received -略- 1 with no checksum 204 dropped due to no socket -略- 155387 delivered 156167 datagrams output まぁ、今のところのstatsがdelivered以外0なのに比べると 確かに微妙にいやんかも、、 おやすみなさい。
思い出したときに書いておこう。 今の902だと、/homeにAMD64なバイナリ(read.cgi/offlaw.cgi)が入っているから、 次のを作るときも、AMD64アーキテクチャじゃないと大変めんどいですね。 /homeを共有することになるわけだから。 Cobraクラスにするかもっと安いのにするか(組みようにより、安いamd64も組めます)は、 別途考えることになるのかなと。
下記がもしほんとだとしたら、、、。 DNSサーバ系も絶対5.3Rにしよう、そうしよう。 blackgoat4: FreeBSD 5.2.1R PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND 684 squid 96 0 347M 341M select 0 212.3H 19.48% 19.48% squid <= CPUを20%食ってる 623 root 96 0 42420K 5416K select 0 4:59 0.00% 0.00% httpd 561 root 96 0 1608K 928K select 2 2:04 0.00% 0.00% ntpd 658 root 8 0 1232K 484K nanslp 0 1:50 0.00% 0.00% svscan 297 root 8 0 3108K 2508K nanslp 1 1:42 0.00% 0.00% ipmon 586 root 96 0 3512K 2012K select 1 1:08 0.00% 0.00% sendma 686 root 96 0 2224K 1440K select 0 0:30 0.00% 0.00% proftp 603 root 8 0 1340K 824K nanslp 3 0:19 0.00% 0.00% cron 427 root 96 0 1312K 704K select 3 0:10 0.00% 0.00% syslog blackgoat3: FreeBSD 5.3R PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND 626 squid 20 0 282M 278M kserel 1 10:18 0.20% 0.20% squid <= CPUを0.2%しか食っていない 582 root 96 0 42012K 7776K select 0 0:01 0.00% 0.00% httpd 1449 service 96 0 2616K 1912K CPU1 0 0:01 0.00% 0.00% top 1007 service 96 0 6092K 2996K select 3 0:00 0.00% 0.00% sshd 598 root 96 0 5048K 4244K select 2 0:00 0.00% 0.00% snmpd 653 dnscache 96 0 32820K 32220K select 1 0:00 0.00% 0.00% dnscac 525 root 96 0 2880K 1776K select 2 0:00 0.00% 0.00% ntpd 306 root 8 0 1804K 1392K nanslp 3 0:00 0.00% 0.00% ipmon 628 root 8 0 1236K 664K nanslp 3 0:00 0.00% 0.00% svscan
ネットワーク周りのGIANTLOCKが解消されたからでは?
#!/usr/local/bin/speedy -- -b1048576
バージョンのbbs.cgiをex7に投入しましたー
bbs.cgi再開発プロジェクト4
http://qb5.2ch.net/test/read.cgi/operate/1101984763/74-75 昨日のピーク時 350投稿/min くらいで、沈没 → DNSの強化でなおったばす
今日のピーク時 350投稿/min しらいで平和
さて明日は? SpeedyCGI フルスペック版bbs.cgi がどう動くのか
1) 軽くなって 400投稿/min でもへっちゃら
2) やっぱ意味無しで 350投稿/min で沈没
3) かえるの歌でも歌ってみる
かーえーるーのーうーたーがー♪
かーえーるーのーうーたーがっ♪
遅れて・・・ 聞こえて・・・ 来るよ・・・
書き込めない 早く対処しろ
お前だけだカス
質問だす #!/usr/local/bin/speedy -- -b1048576 で bbs.cgiが起動され speedy_back プロセスが走り出すと思うのですが このときの speedy_back の pid を 74745 とすると プロセス 74745 が殺される(or自滅する)タイミングって何時ですか?
MaxRuns( -r オプション、デフォルトが500 )判定で再execされても 古いバックエンドが kill されないように見えるということですか?
うわっ、調べてる間に詳しいレスついてた、ハズい・・・・
ex7の1プロセスあたりのCPU時間を30秒から120秒に増やしました。 (speedy_backendが500回分ずつ処理するので、1プロセス的に消費時間が増えるため)
ふんふん つまり Speedy は時限装置が組み込まれていると、 そしてサーバは殺しに行かないようにしたと、 こういう感じ?
>>909 そういうことになります。120秒が短いなら、またのばそうかなと。
bbs.cgiには暴走癖がありますが、それは120秒制限で遅かれ早かれ死ぬはず。
でex7ですが、今のところ平和なかんじですね。
300投稿/minを超えるあたりからが、見ものか。
でも冷静に考えてごらんよ。 このまま進むと確かにそう遠くない将来(Febころ?) tigerで 500投稿/min をこなすようになるですねぇ なったらどうなるかというと・・・・・ 道路を作れば渋滞が解消するという幻想を 抱いている方々と同じ境遇というか、、 車減らさなきゃ渋滞解消しないのに、 道を快適にすればそれ以上に車に乗る人が増えるのに、
>>911 しょうがないすね。
それはもう、「宿命」とか「業」とかのレベルかなと。
DNSサーバ構築で巻き込まれはじめ、
uma作戦以降どっぷりと漬かってからというもの、
サーバの資源不足が解消するなんて、はじめから思ってないっす。
とりあえず、きゅうり踊りだけはちょっとだけうまくなったのかもしれないけど。
いや必ずどっちかが限界に達する それか質的にかわるか
>>914 dnscache止めてた = bananaサーバからの書き込みができなかったはずなので、
本当に書き込み数が減っていたはず。
oyster243を観察中。 ネットワークはじめ、全体的にとても軽くなった気がしますね。 やっぱ、ネットワーク周りのgiant lock解消が効いてるのかなと。
ex7書き込めないんだけど何とかしてよ
わけわかめ
撃沈させたら勝ちらしい…
ちゃんと説明してくれんと意味がわからん
>>915 そうでしたかぁー。
いや、kawase-m見る限り狼も数字動いてなかったもんで、、
>>922 狼= ex7は別の要因と思います。(bbs.cgiが違う)
BBQのalerm()な処理が入ってないんだと思う。
そうでしたか。微妙にそんな気はしたけど、、 おつかれさまですー。。
>>923 あっ
もしかして、使ってなさそうな処理をばっさり削ったのが原因かも。。。
alerm() は入っているけど、 シグナルなんとかってのはばっさり削ったのだ
はっはっは
きっとそのせいだ、、
お狐様のたたりじゃー
<br> 関係もコピペの問題なんだろうなぁ。。。 もしのソースからもう一度慎重に持ってくれば直る予感。
やはり、感でいじってるのか…
929 :
動け動けウゴウゴ2ちゃんねる :04/12/03 23:17:46 ID:VCYH3WtF
狐さんの言うことを信じるとアレだよ
FOXさーん、 bbs.cgi をいじって、return 0;を入れませんでしたか?
qb6のだけ、いじったです。 で、これを配布すればいいのかな。
return 0; も 1 も沢山入れたからわからないなぁ、 いつごろのことですか?
あっ 入れた気がする !! うへへぇー 間違ってくばっちった、
>>932 6時間ぐらい前だと思います。
で、Proxyチェックのところをパスするにようなっていたことが判明したので、
そこを元に戻したものを配布しておきました。
これで、BBQは再度有効になったはず。
935 :
外野ァァン :04/12/03 23:25:51 ID:QgW9l6Jd
↓またFOXか
てなわけで、たぶんBBQの問題は解決したはずです。
なるほど、「避難訓練実施中」バージョンの時ですね。
>>933 了解です。
で、今後はもうBBQは止めないので、これで問題ないでしょう。
>>936 試したら、BBQ戻ってますね。
乙ですー
BBQのquery数、戻りましたね。 でも相変わらずoyster243は軽いので、 5.3Rへのバージョンアップの効果は大きいみたい。
∩( ・ω・)∩ばんじゃーい
おい!!いつになったら書き込めるようになるんだ 早く直せ糞野郎
書き込めうよ
かつをが小学校を卒業したら、
>>943 とりあえず書き込めない板とスレを出さないと解決にならないと思われ
947 :
名無し募集中。。。 :04/12/03 23:47:45 ID:aDuTSyF/
普通にサクサクと書き込めるぞ 自分の環境を晒せよ
949 :
動け動けウゴウゴ2ちゃんねる :04/12/03 23:48:27 ID:VCYH3WtF
川沿い2階建てアパート、築12年くらい
竪穴式住居、2DK
提案です ex7 も read.cgi(DSO風味)やっちゃいませんかー? > root ★さん
>>952 やりますか。
んじゃ、ごそごそしてきます。
ほほーい read.cgi@ex7 一回止めて .so 版 構築します
しました
ex7、Apache側は設定完了。
957 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:10:04 ID:33OLbPbM
FOXとrootは俺の肉便器
500 error になるっすね、、、 なんか間違ったかなぁ
959 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:10:39 ID:Ga8saMUM
FOXとrootは夫婦
んー、なんか変だなぁ。
[Fri Dec 03 07:10:40 2004] [error] [client むにゃ] /home/ch2ex7/public_html/test/read.cgi: /home/ch2ex7/public_html/test/read.cgi: mmap returned wrong address: wanted 0x8048000, got 0x2873b000, referer:
http://ex7.2ch.net/morningcoffee/
961 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:11:46 ID:33OLbPbM
>>958 アナルを小指で軽く触ってみるといい。マジで。
962 :
井沢 ◆News3/vse2 :04/12/04 00:12:03 ID:+o+B/GnB
ぽーーーーーーーーーーーーーーーーーー!
何やろうとしてるの?
ちょっと、ex7のApacheの設定いじります。 dsoと同じにしてみよう。
965 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:14:10 ID:+6YJgCey
エラー出てる(゚听)
どれが最新だか解らなくなったので dso.2ch.net からバイナリをコピーしました うごいた
動いたと思う。 んー、SuExecしないといけないのか。いまいちだなぁ。 後で、もう1回設定見直してみるです。
968 :
井沢 ◆News3/vse2 :04/12/04 00:15:37 ID:+o+B/GnB
ぽーーーーーーーーーーー!
>>966 んじゃ、もう1回SuExecなしにしてみます。
SuExecなしにした。
動いた。ということで、
>>966 が備後の模様。
FOXドラクエ買った?
972 :
井沢 ◆News3/vse2 :04/12/04 00:18:00 ID:+o+B/GnB
ワロタ
973 :
以下、名無しにかわりましてVIPがお送りします ◆LLLLLLLLL. :04/12/04 00:18:38 ID:t4JWUgFP
楽しそうだな >>root▲ ★ >>FOX ★
おいFOX VIPの機能戻せよ 飽きっぽい奴だな
そうやって一時の気紛れでチョコチョコやったり また戻したり 蓄積という言葉を知らないと 器のデカイ大人に成れねえよ
976 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:21:04 ID:d6OpDHOM
他はどうでもいいけど戦闘力と!baseと!774!force!3は戻してほしいな
ダイエット中ですから、
978 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:21:56 ID:33OLbPbM
>>974-975 今やってるのはどう見ても気まぐれじゃないって。
スマソ、出しゃばりすぎですね。
980 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:22:24 ID:Edh7iJvY
FOX★はさすがだなあ
981 :
井沢 ◆News3/vse2 :04/12/04 00:23:00 ID:+o+B/GnB
僕に★頂戴
そろそろ、次スレの季節か。 立ててきます。
983 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:23:14 ID:VJci92q4
ワロス 俺が代わりに立てるでー
984 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:24:24 ID:d6OpDHOM
およいずむに★をあげてください
985 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:24:23 ID:VJci92q4
986 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:25:01 ID:33OLbPbM
988 :
井沢 ◆News3/vse2 :04/12/04 00:26:15 ID:+o+B/GnB
★ほしーー
989 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:26:50 ID:33OLbPbM
たまにはVIPもいいかと
991 :
動け動けウゴウゴ2ちゃんねる :04/12/04 00:31:24 ID:VJci92q4
あら
994 :
動け動けウゴウゴ2ちゃんねる :04/12/04 01:45:39 ID:DoT4jBB9
1000もらい
systat -pとかsystat -vとかすると、いろいろとわかるです。
誤爆?
>>996 ですね。
>>1 が8月21日か。
このスレでの作業は、とても有意義だったなぁと。
いつもおつかれさまです。 これからもいっしょに(?)遊ばせてもらいますー
そろそろ1000か
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。