X



トップページ運用情報
472コメント179KB
bbs.cgi再開発プロジェクト6
■ このスレッドは過去ログ倉庫に格納されています
0001 ◆CPUinDOop.
垢版 |
2007/04/11(水) 21:48:35ID:lo7VtG1U0
peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。

【開発環境の工事現場】
また挑戦。@2ch掲示板  http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/

関連スレなどは >>2-5 くらい
0121root▲▲ ★
垢版 |
2007/06/12(火) 15:18:44ID:???0?PLT(74072)
-lpthread じゃなくて -lthr だともっと幸せかも。< MT >>120
libmap.conf 書けばいいわけだけど、明にリンクすればおkかも。
0122 株価【810】 △△ ◆cZfSunOs.U
垢版 |
2007/06/12(火) 16:58:56ID:XGnP+XWV0
>>121 そういえばそうでしたね<libpthread vs. libthr

ただ,コンパイル時には -pthread オプションを指定してたんですが,
libthr の場合にはどうするのがいいのかな(ライブラリをリンクする順番や
必要なマクロ定義などの関係上,スレッドライブラリは -l で直接指定するのは
非推奨のようなので.Solaris で -pthreads 指定すると _REENTRANT のような
マクロも自動的に定義されたりしますが,FreeBSD の場合は
こういうマクロ定義はいらないんでしたっけ).

ちなみに,こんな動きもあったようで.

http://lists.freebsd.org/pipermail/cvs-src/2007-May/078202.html
>Change the default thread library to libthr.
0125 株価【845】 △△ ◆cZfSunOs.U
垢版 |
2007/06/23(土) 08:05:57ID:8Img35st0
http://qb5.2ch.net/test/read.cgi/operate/1169173887/977
>bbs.cgi の foxDNSquery や foxDNSquery2 も、それにすると幸せなようかん。

の件ですが,

a. レスポンスが不要なもの
b. レスポンスが必要なもの

のうち,まず a. は話が早いんですよね.$res->query() を単純に $res->bgsend() に
置き換えた上で,戻り値チェックも何もせずに抜ければいいだけなので.

一方,b. の方はもうちょっと検討が必要ですね.非同期クエリーを行うことによる最大のメリットは,
レスポンスが返ってくるまでの待ち時間を利用して別の処理を進められることです.
そのメリットを享受するためには,DNS 問い合わせの処理を

1. クエリーを発行する
2. レスポンスをチェックする

の二つに分け,なおかつ 1. の処理をできるだけ前倒しし,2. の処理をできるだけ先送りする
のがいいんですね.となると,bbs.cgi 全体の処理の流れを再検討することから始めた方がいい,と.
0126動け動けウゴウゴ2ちゃんねる
垢版 |
2007/07/23(月) 20:23:10ID:MiOq7H/e0
read.htmlがメモリーリークを起こしててプロセス終了まで開放されずにスワップしまくりの件は、
  1)何それ初めて聞いた
  2)I.E.ユーザーのことは後回しでいいよ
  3)もうread.htmlには興味無いよ
  4)調べたけど原因がわからないから仕様
  5)原因がわかったけど直せないから仕様
  6)原因がわかったけど面倒臭いから仕様
のいずれなんでしょうか。
雰囲気的にはdatを取ってくるオブジェクトが開放されていないような感じで、当該処理をしている窓を閉じてもプロセスが終了するまで確保したメモリーがそのまま残っています。
ざっと1回「リロード[Ctrl+r]」のリンクをクリックする毎にメモリー使用量が20〜30M前後増加し、その後何をしても減少しません。
ちなみにWin2k+IE6です。
0128 株価【795】 △△ ◆cZfSunOs.U
垢版 |
2007/07/26(木) 19:03:16ID:eUcFA6+N0
>>126 自分で使っている Firefox もプロセスサイズが肥大化しやすい傾向があって,
read.cgi 使用時に比べて read.html 使用時はその肥大化のペースが結構速いんですが,

>ざっと1回「リロード[Ctrl+r]」のリンクをクリックする毎にメモリー使用量が20〜30M前後増加

1回のリロードでそこまで一気に増加することもないですし,
また Windows XP SP2 + IE 6 でも動作確認していましたが,
そこまでの急激な増加というのは見たことないですが......

ただ,IE 6 SP1 では↓のようなメモリリークのバグがあるそうなので,SP2 にしてみてはどうでしょうか.
http://support.microsoft.com/default.aspx?scid=kb;ja;890900

# read.cgi / read.html のことはスレ違いな気がするものの,
# 現状では read.cgi スレが落ちてるのでとりあえずここでレスしましたが,
# それでも動作報告スレとかの方がいいような気も.
0130 株価【795】 △△ ◆cZfSunOs.U
垢版 |
2007/07/26(木) 21:44:53ID:eUcFA6+N0
Win2k ってもうサポート期間終了してたんでしたっけ?
だとすると,それはあきらめてもらうということで......
0133 株価【809】 △△ ◆cZfSunOs.U
垢版 |
2007/07/27(金) 00:34:14ID:qB7fjbry0
「延長サポートフェーズ」ですか......ともあれ,
古いバージョンのブラウザにあるバグだし,
こちら側ではあえて対処しないということで.
0134動け動けウゴウゴ2ちゃんねる
垢版 |
2007/07/27(金) 13:19:38ID:3WwixymB0
>>128-133了解しました。当面環境を変える予定は無いので、仕様として我慢して使います。
情報提供とご返事にお手数をかけて頂き有難う御座居ました。(ぺこり)
0135 ◆TWARamEjuA
垢版 |
2007/09/10(月) 20:44:12ID:LQjv6npu0
>>57
→bbs.cgi 軽量化の切り札第一弾(Rock54 データのプリコンパイル)も,
→そろそろやるといいのかなぁ......

これってば、もしかして既に実施済み?
いやあのちょっぴり不具合みたいなのが出ているようでして(苦笑)

♯本体リストの方は大丈夫のもより♪
0137 ◆TWARamEjuA
垢版 |
2007/09/11(火) 21:04:51ID:29nQHya40?2BP(6825)
>>136
率直に具体的に云いますと、Rock54登録所では、いわゆる「さくら」がリストの最初に来るように番頭はんがソートしていまして、それを丁稚どんに取りに来て貰っています。
それをもしかしたらbbs.cgi船が出る時に再ソートしていないかなぁと思いましてして。
0138 株価【888】 △△ ◆cZfSunOs.U
垢版 |
2007/09/11(火) 23:28:53ID:Tz61+8GH0
>>137 こんな感じなんで,bbs.cgi 側ではソートはしてないような......

        if(open(ADFILE, 'Rock54DataFile'))
        {
#               @FOX_Ro54 = <ADFILE>    ;
                @FOX_Ro54 = map { eval {
                        no warnings;
                        my @a = (split /<>/)[5..7];
                        [qr/$a[0]/, @a[1..2]];
                }; } <ADFILE>;
                close(ADFILE)           ;
        }
0139 ◆TWARamEjuA
垢版 |
2007/09/12(水) 00:15:11ID:A+yLPcsz0
>>138
なぁるほど。。。
ってことは、evalで引っかかっちゃってる(qr//でミスコンパイル)のかぁ。。。
でもって鯖によって5.6系と5.8系が混在しているのも何かありそうな。perlreでもよく読んでみよう。。。
0158動け動けウゴウゴ2ちゃんねる
垢版 |
2007/11/24(土) 07:51:53ID:mIMICoSQ0
既に忘れ去られている「関連ページ」。
随分前に、管理人の指示でread.cgiからはリンクが外され、
http://info.2ch.net/test/tb.cgi も既に消滅しているわけですが、
index.htmlには未だにリンクが残っていたりします。
通常鯖、bbsd鯖共に。
外しましょう外しましょうー。
0161近藤奈香
垢版 |
2007/12/03(月) 10:29:48ID:qX+IxZ7C0
FF11攻略情報 www.rmtfcne.com/f11
0162山本恵子
垢版 |
2007/12/03(月) 11:01:06ID:qX+IxZ7C0
FF11攻略情報 www.rmtfcne.com/f11
0167root▲▲ ★
垢版 |
2007/12/10(月) 17:37:06ID:???0?PLT(80128)
どうするのがいいんですかね。 >>165-166

単に、1行の長さをもう少し許容するようにする、だけでいいものなのかどうか。
0168 ◆TWARamEjuA
垢版 |
2007/12/10(月) 21:27:36ID:tUqA/Ra10?2BP(6825)
そもそも1行の長さを判定しない。
と言うのもあるかな♪
0169stream ◆PNstream2s
垢版 |
2007/12/10(月) 21:32:29ID:iVMBh61O0
そもそも1行の長さを制限するのって何で?
改行するのは段落を変えるときだけのほうがいいと思う
0170動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/10(月) 22:08:34ID:G46pvWjFP
1行に"aaaaaaaaaaaaaaaaaaaa...と "a"を4096文字並べることによって
topページ見たときに、横幅が物凄く広くなる荒らし方が出来るし。

今の2chで出来るかはどうか知らんけど
0174stream ◆PNstream2s
垢版 |
2007/12/10(月) 22:38:32ID:fZlpBMWl0
画面幅に合わせて見る側のブラウザが改行するのが本来でしょ
0175動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/10(月) 22:55:39ID:HXQHlYzo0
>>174
それも違うでしょ。
画面幅に合わせる事が絶対では無い。

CSSでの明示指定やブラウザ機能での明示設定ならまだしも、
そうでない場合に強制改行するのは全くの誤り。
0176 株価【857】 △△ ◆cZfSunOs.U
垢版 |
2007/12/11(火) 04:43:55ID:9WbGy+ZE0
>>158,164 bbsd でも変更しますた.で,とりあえず ex21 に反映しますた.
他に news21, news22, wwwww, live25, anime2 あたりにも入ってたかと思いますが,
そのあたりのは一連のリフレッシュ作業により稼働中の板はなくなったようなので,省略.
リフレッシュ後の鯖で入れた方が良さそうなのがあれば,改めて入れましょう,ってことで.

live23b, live24b, snow あたりのはむむむさんにおながいします,ということで.


あと " については,普通の本文中などにある限りはあえて &quot; に
変換する必要もないんでしょうが,確認画面で input タグの中に入ると
問題があったので一律に変換するようになったんですよね.なので,
変換が必要なケース(input タグ中に入る場合とメール欄)と
不要なケースを峻別して,そのあたりの処理を見直すというのも
一つの方法かもですが......
0177root▲▲ ★
垢版 |
2007/12/12(水) 00:21:42ID:???0?PLT(80128)
>>176
snow のは root 権限なくても更新できるようになっているです。
移行の際にそうしますた。

といってもいま、落ちてますが、、、。(´・ω・`)
0182 株価【851】 △△ ◆cZfSunOs.U
垢版 |
2007/12/17(月) 10:40:44ID:LySqlESJ0
・ qb5 で詰まる原因を探りやすくすべくログを取るようにする
・ いつぞやのように規制リスト配布がバグっても 500 エラーにならないようにする
>>176 の後半

あたりをやってみようかと......
0184動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/17(月) 19:38:10ID:6jOM937c0
&quot; ではなく
&quot と書いても " に変換されてるみたいだけど正常なのかな?

全角 → 半角
quot → quot
&quot → "
&quot; → "
0190 株価【850】 △△ ◆cZfSunOs.U
垢版 |
2007/12/17(月) 22:07:29ID:LySqlESJ0
dat 中(というか HTML ドキュメント中)の &quot が
ブラウザでどう表示されるか,という話ならブラウザ依存でしょうね.


で,とりあえず今のところログに残ってるのは

[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 の実行時間が長くなった時に
ログに記録する仕組みは動くことが確認できたので,
さらにもうしばらく観察......
0191root▲▲ ★
垢版 |
2007/12/18(火) 01:02:20ID:???0?PLT(80222)
>>190
qb5 ですが、なんか、qb6 で動くものと動機しているっぽい気がしました。
アクセスログと見比べてみるといいかも。
0192 株価【880】 △△ ◆cZfSunOs.U
垢版 |
2007/12/18(火) 02:29:24ID:Ifuf27KA0
>>191 なるほど.っていうか >>190 のログと 500 エラーのタイミングも一致してませんね.
これは,bbs.cgi 実行に入る前の SpeedyCGI そのものの実行段階で詰まってるってことかな......
0193root▲▲ ★
垢版 |
2007/12/18(火) 02:40:43ID:???0?PLT(80222)
あと、ほとんどの場合は 500 エラーが出ても書けているんですよね、、、。
つまり、少なくとも dat に追記するところまでは処理が動いていると。
0194 株価【858】 △△ ◆cZfSunOs.U
垢版 |
2007/12/18(火) 05:07:09ID:Ifuf27KA0
当てずっぽうで書きますが......現状で 512 になってる kern.maxusers を
さらに増やしてみてはどうでしょう,とか......
0195FOX ★
垢版 |
2007/12/18(火) 05:42:52ID:???0
酔っ払いの私にはわかんですー
0197root▲▲ ★
垢版 |
2007/12/18(火) 10:50:23ID:???0?PLT(80222)
>>194
資源系ですか。

何か、資源系で足りないものがあるような、というのには、
私も同意。
0198 株価【858】 △△ ◆cZfSunOs.U
垢版 |
2007/12/18(火) 11:52:56ID:Ifuf27KA0
あくまで推測ですが,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
0199動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/18(火) 13:44:09ID:g5P0B/l20
SpeedyCGI で speedy_backendを使わないoptionったないんでしたっけ?
もしあったら少しの間それで援用してみるとか、
0200FOX ★
垢版 |
2007/12/18(火) 13:44:42ID:???0
援用じゃなかった運用
0202 株価【851】 △△ ◆cZfSunOs.U
垢版 |
2007/12/19(水) 05:01:24ID:oWXfZ2SH0
>>201
>普通の Perl スクリプトとして動か

すようにしてみました. @qb5
0203FOX ★
垢版 |
2007/12/19(水) 05:03:31ID:???0
おおー
さてどうなるか、、、
0204 株価【851】 △△ ◆cZfSunOs.U
垢版 |
2007/12/19(水) 06:49:42ID:oWXfZ2SH0
普通の 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)
0207 株価【851】 △△ ◆cZfSunOs.U
垢版 |
2007/12/19(水) 12:21:29ID:oWXfZ2SH0
どうにか,SpeedyCGI モードにしても 500 エラーにならないようにできたようです.

さて,500 エラーになっていた原因ですが...... FreeBSD の Unix ドメインソケット問題とかではなく,
なんと人為的な要因(POST データの送信に時間をかける DoS 攻撃により
speedy_backend のスロットがふさがってしまっていた)だったようです.
実行時間のかかるルーチンのログをメインルーチンに入る前の段階で取るようにしたら,
フォームデータ読込のところで時間がかかっていることから判明しました.
で,それへの対策を取りました,ということで.
0213 株価【851】 △△ ◆cZfSunOs.U
垢版 |
2007/12/19(水) 13:01:43ID:oWXfZ2SH0
まぁ,攻撃元等のログも取ってあるんですが(/var/tmp の下にあります),
海外串をランダムに使ってる感じですね......
0214動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/19(水) 14:40:41ID:X9Mrh5XD0
あれどうやって対処すればいいんだろ
自分の掲示板も海外SPAMみたいなのでたまにやられてる
cgiがなかなか終わってくれないんでレン鯖の同時実行数制限がかかって困るんだよな
0215動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/19(水) 14:48:14ID:CCDDIJ0z0
全鯖でbbs.cgiが止まった予感。
0218動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/19(水) 14:52:54ID:elBHtltk0
本当に止まってるなら鯖落ちスレがあんな少人数で済むわけがないだろ
あそこのテンプレにこう書いてるだろ

◆鯖落ち報告者が少ない時は自分の環境を疑ってみましょう。
0219動け動けウゴウゴ2ちゃんねる
垢版 |
2007/12/19(水) 14:56:54ID:8+z2btza0
>>214
うちは海外ホストがCGI踏んだらdenyリストに追加する仕掛けにしてる
■ このスレッドは過去ログ倉庫に格納されています

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