bbs.cgi再開発プロジェクト6
■ このスレッドは過去ログ倉庫に格納されています
peko鯖の稼動によりボトルネックの一つである事がより明らかになった bbs.cgi作り直しプロジェクトです。 【開発環境の工事現場】 また挑戦。@2ch掲示板 http://dso.2ch.net/myanmar/ また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/ 関連スレなどは >>2-5 くらい >>177 なるほど,そうですたか.では snow のは復旧したらこちらでやっておきます. >>179 おつでした。 live23, live24 の bbsd 更新しました。 ・ qb5 で詰まる原因を探りやすくすべくログを取るようにする ・ いつぞやのように規制リスト配布がバグっても 500 エラーにならないようにする ・ >>176 の後半 あたりをやってみようかと...... &quot; ではなく &quot と書いても " に変換されてるみたいだけど正常なのかな? 全角 → 半角 quot → quot &quot → " &quot; → " dat 中(というか HTML ドキュメント中)の " が ブラウザでどう表示されるか,という話ならブラウザ依存でしょうね. で,とりあえず今のところログに残ってるのは [2007-12-17 16:26:18] &foxSetHost($GB) ; # ホストの判定: took 23s [2007-12-17 17:22:31] &foxSetHost($GB) ; # ホストの判定: took 22s [2007-12-17 18:32:17] &foxSetHost($GB) ; # ホストの判定: took 23s てな感じですが(DNS 問い合わせで詰まってる?), これはいつも qb5 で詰まる時のパターンなんですかね? ともあれ,bbs.cgi の実行時間が長くなった時に ログに記録する仕組みは動くことが確認できたので, さらにもうしばらく観察...... >>190 qb5 ですが、なんか、qb6 で動くものと動機しているっぽい気がしました。 アクセスログと見比べてみるといいかも。 >>191 なるほど.っていうか >>190 のログと 500 エラーのタイミングも一致してませんね. これは,bbs.cgi 実行に入る前の SpeedyCGI そのものの実行段階で詰まってるってことかな...... あと、ほとんどの場合は 500 エラーが出ても書けているんですよね、、、。 つまり、少なくとも dat に追記するところまでは処理が動いていると。 当てずっぽうで書きますが......現状で 512 になってる kern.maxusers を さらに増やしてみてはどうでしょう,とか...... >>194 資源系ですか。 何か、資源系で足りないものがあるような、というのには、 私も同意。 あくまで推測ですが,speedy <-> speedy_backend 間の通信(Unix ドメインソケット経由)が qb5 / qb6 の環境ではエラーになりやすいということかも知れないのではないかなぁ,と. SpeedyCGI のソースを見てみると ---------------------------------------------------------------------- http://speedycgi.cvs.sourceforge.net/speedycgi/2.x/src/speedy_frontend.c?view=markup 388 /* Create sockets in preparation for connect. This may take a while, 389 * esp on FreeBSD, when it's out of sockets. 390 */ 391 if (!sockets_open++) 392 speedy_ipc_connect_prepare(socks); http://speedycgi.cvs.sourceforge.net/speedycgi/2.x/src/speedy_ipc.c?view=markup 22 #ifdef ENOBUFS 23 # define NO_BUFSPC(e) ((e) == ENOBUFS || (e) == ENOMEM) 24 #else 25 # define NO_BUFSPC(e) ((e) == ENOMEM) 26 #endif 48 static int make_sock(void) { 49 int i, fd; 50 51 for (i = 0; i < 300; ++i) { 52 fd = socket(AF_UNIX, SOCK_STREAM, 0); 53 if (fd != -1) 54 return fd; 55 else if (NO_BUFSPC(errno)) { 56 sleep(1); 57 speedy_util_time_invalidate(); 58 } 59 else 60 break; 61 } 62 speedy_util_die("cannot create socket"); 63 return -1; 64 } 180 void speedy_ipc_connect_prepare(int socks[NUMFDS]) { 181 int i; 182 for (i = 0; i < NUMFDS; ++i) 183 socks[i] = make_sock(); 184 } ---------------------------------------------------------------------- FreeBSD では socket(AF_UNIX, SOCK_STREAM, 0) が ENOBUFS になりやすいということかも? そこで,ENOBUFS になりにくいようにするにはどうしたらいいか,というのがポイントかも知れないんじゃないかと...... あと,こんなのもあるようですが...... UNIX domain sockets MFC's http://unix.derkeiler.com/Mailing-Lists/FreeBSD/stable/2007-05/msg00206.html SpeedyCGI で speedy_backendを使わないoptionったないんでしたっけ? もしあったら少しの間それで援用してみるとか、 >>199-200 http://daemoninc.com/SpeedyCGI/ でそういうオプションは見あたりませんが, 普通の Perl スクリプトとして動かせばそういう形にはなるかもですね. >>201 >普通の Perl スクリプトとして動か すようにしてみました. @qb5 普通の Perl スクリプトにしてからは 500 エラーは出てないようですが,しかし...... bbs.cgi の実行時間が異常に長くなってたくさんたまってしまうことが相変わらずあるようで...... 今ログを取るようにしてるメインルーチンより前の段階で詰まってるってことかな? そっちでもログを取るようにしてみるか...... last pid: 80866; load averages: 0.08, 0.07, 0.02 up 63+17:39:52 06:41:07 18 processes: 1 running, 17 sleeping Mem: 519M Active, 1110M Inact, 210M Wired, 63M Cache, 112M Buf, 74M Free Swap: 4096M Total, 116K Used, 4096M Free USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND ch2qb5 80773 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80774 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80775 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80776 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80778 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80780 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80781 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80782 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80783 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80785 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80788 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80791 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80792 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80794 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) ch2qb5 80809 0.0 0.7 15700 14792 ?? I 6:39AM 0:00.28 /usr/bin/perl bbs.cgi (perl5.8.8) >>204 普通のPerlでも詰まりますか。 # 逆に、原因究明がやりやすいのかも。 再び SpeedyCGI モードに戻して様子見てみます...... どうにか,SpeedyCGI モードにしても 500 エラーにならないようにできたようです. さて,500 エラーになっていた原因ですが...... FreeBSD の Unix ドメインソケット問題とかではなく, なんと人為的な要因(POST データの送信に時間をかける DoS 攻撃により speedy_backend のスロットがふさがってしまっていた)だったようです. 実行時間のかかるルーチンのログをメインルーチンに入る前の段階で取るようにしたら, フォームデータ読込のところで時間がかかっていることから判明しました. で,それへの対策を取りました,ということで. まぁ,攻撃元等のログも取ってあるんですが(/var/tmp の下にあります), 海外串をランダムに使ってる感じですね...... あれどうやって対処すればいいんだろ 自分の掲示板も海外SPAMみたいなのでたまにやられてる cgiがなかなか終わってくれないんでレン鯖の同時実行数制限がかかって困るんだよな それは全発言統計システムの方のBBSではないかと bbs.cgiが止まったらここにも書けません 本当に止まってるなら鯖落ちスレがあんな少人数で済むわけがないだろ あそこのテンプレにこう書いてるだろ ◆鯖落ち報告者が少ない時は自分の環境を疑ってみましょう。 >>214 うちは海外ホストがCGI踏んだらdenyリストに追加する仕掛けにしてる うは、運用情報板でなんか詰まるなぁの件は攻撃だったのか・・・ 修正お疲れ様でした。 >>219 それくらいしないとだめみたいだね。毎分何回も叩かれたりするし 国内ISP以外弾くようなことも考えておくか それ以外の対策としては、どこかにタイムアウトの仕掛けでも入れるのかな >>213 海外串を禁止にするしかありませんね 今の現状では 変更部分の diff を縦読みしました。なるほど。 DoSというか、例の「たまにここにもスレ立ったりするやつ」 とかとも関係あるのかも。 # これからかいぎ。 参考のために、どんな対策をしたか簡単に教えてもらえませんか 詳細は、企業秘密じゃないかなと。>>225 企業じゃなくて個人サイトだけど。 普通に考えれば、 例えば指定されたデートの時間に3時間遅れてもけなげに待っていたのを、 1時間たったら「わたし…きらわれちゃったのね、ごめんなさい。さよなら」って言って、 なきながらその場を立ち去るとか、たぶんそんなことなんじゃないかなと。 いやいや 1時間たったら「おまえきらわれちゃったから、首吊って死ぬる!」って言って、 警備員のおじさんに追い出されるとか。 ひとりクビにしたくらいじゃ意味ないぜ 余剰人員がたくさんいる っ自宅警備員 一応今後のために...... Perl モジュールについてのドキュメントは perldoc で表示されます. 例えば,今回のように「LWP モジュールで POST するにはどうすればいいか?」なら perldoc LWP をコマンドラインから実行すればドキュメントが表示されて,その中に書いてあります. TATESUGI厳し杉 IP群を18ビットで丸めないで下位8ビットだけにしてくれよ 新規一転。 気分を変えて新しいブログ書く事にしました。 まあ つまらないブログでしょうが(笑) あ 不定期更新ですから あしからず。 http://webmastei.com/weeb Hi. Sorry for my english. Happy New Year!!!!! ?Good Luck! Hi. Sorry for my english. Happy New Year!!!!! ?Good Luck! age規制ってできない? 通常の利用で同一IPで多数のスレをageる事は無いから、 age荒らしが遊んでるだけだし。 時間内に同一IPからageリクエストがあってもage処理しないようにする。 cookieに前回ageた時刻を入れるのが簡単だけど、cookie偽造されるかな。 多数のスレをsageるのはいいの? スレッドフロート掲示板でageそのものを否定してるのかしらー そもそも短時間で複数スレ書き込めるのがおかしい? 同じスレならともかく別々のスレを1分以内に何回も書き込むのはねぇ だいたい●+串でやってるんだろうけど >>238 20スレとか30スレとかまとめてageる事なんだが。 そのての荒し見た事無いの? Hi. Sorry for my english. Happy New Year!!!!! ?Good Luck! 批判要望でageなんちゃらとかのスレあったはずだからそこでまとまって答え出るまで頑張れ 1001書き込み時に1のIP群がまだTATESUGIキューにあったら消してあげるぐらいの優しさはないの? 削除依頼板で串使っても漏れてる場合生IPが隠しタグに表示されてるじゃないですか 生IP抜けるなら、串使った場合も生IPの方でID生成して欲しい 何10本と串自演してる荒らしがいて一発でIDあぼーんできないので、なんとか対応して欲しい 串で書けなくしてもらうのが一番なんですけど >>245 >>247 どうにかして欲しいと思っているのなら 行為の具体例をURL付きで添えて欲しいところですね 残念ながらここに書いてもどうにもならないのですが あと荒らす人はいかなる手段を使ってでも荒らそうとするもので 困ったものです >>249 つまり手段さえ講じれば荒しても良いわけだ >>250 こんなとこで一人の名無しの言質取ったところで何しようってのさ。 >>252 こんなとこで名無しやりこめて何しようってのさ。 生IP漏れ串の場合は生IPの方でID生成すればいい 普通の串より匿名串は数がかなり少ないから荒らし抑制になる HOSTがデフォルトで出る板では、結構漏れ串で書いてる人いるよ BBQ済みの串で書き込むとIDの末尾がKになるのまだー!? くそっ また立てられん 1001行ったらTATESUGI恩赦にしてくれマジで [ ^ω^] や [―{}@{}@{}-] 表示は荒らし抑制期待できるんだから VIP931規制がない板だったら導入してよ P2だとIP変えてもID変わらないじゃん ●で書き込んだ場合はIP変えても串使っても同じIDにして欲しい ●の識別子でIDを生成 >>268 P2みたいにID最後の1文字を変えればいいんでね? [8文字の従来のID][1文字SLIP][●のIDから生成した文字列(5〜8文字?)] ってのはどうよ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる