◆cZfSunOs.Uさん作成のmod_cgidsoにより、大きな負荷軽減が図られたread.cgi。
このスレでは、そんなread.cgiの(再)開発・実装すべき機能について取り扱います。
前スレより:
574 名前:FOX ★[sage] 投稿日:05/01/05 15:54:28 ID:???
全てのサーバ cobra/toger/banana で read.cgi の dso化が完了。
これから href の置き換え ime.nu 対応を行い
それが終了したら第一ステップは完。
第2ステップは
2-1) bug つぶし
2-2) 仕様の変なところは変更
2-3) 時代背景にあわせたデコレーション
こんなとこかと、
前スレ:
read.cgi再開発スレ
http://qb5.2ch.net/test/read.cgi/operate/1087199303/
探検
read.cgi再開発スレ Part2
■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
05/01/17 06:11:01ID:???423▲ ◆cZfSunOs.U
2005/12/06(火) 02:18:11ID:iYd2v5pK0 >>421
>Request exceeded the limit of 10 subrequest nesting levels
>due to probable confguration error.
う〜む......サブリクエストが無限ループになってるんですかね......
proxy 関連の設定はどうなってますか?
>Request exceeded the limit of 10 subrequest nesting levels
>due to probable confguration error.
う〜む......サブリクエストが無限ループになってるんですかね......
proxy 関連の設定はどうなってますか?
424▲ ◆cZfSunOs.U
2005/12/06(火) 02:22:45ID:iYd2v5pK0 あと気になる点は......
・ ch2->zz_filesize の型 (apr_size_t? apr_off_t?)
・ ch2->BigBuffer[ch2->zz_filesize] に '\0' を置く必要あり?
・ ch2->zz_filesize の型 (apr_size_t? apr_off_t?)
・ ch2->BigBuffer[ch2->zz_filesize] に '\0' を置く必要あり?
425root▲ ★
NGNG >>424
> apr_size_t zz_filesize ;
のようです。
で、apr_file_close(in) の後は、
p = ch2->BigBuffer ;
for(i=0;i<ch2->zz_filesize;i++,p++)
{
if(*p == '\0') *p = '*' ;
}
*p = '\0' ;
p = ch2->BigBuffer ;
ch2->lineNum = 0 ;
と、やっている模様。
> apr_size_t zz_filesize ;
のようです。
で、apr_file_close(in) の後は、
p = ch2->BigBuffer ;
for(i=0;i<ch2->zz_filesize;i++,p++)
{
if(*p == '\0') *p = '*' ;
}
*p = '\0' ;
p = ch2->BigBuffer ;
ch2->lineNum = 0 ;
と、やっている模様。
426root▲ ★
NGNG >>423
> proxy 関連の設定はどうなってますか?
# livejupiter
ProxyPass /livejupiter/SETTING.TXT !
ProxyPass /livejupiter/ http://live22x.2ch.net/livejupiter/
ProxyPassReverse /livejupiter/ http://live22x.2ch.net/livejupiter/
です。
> proxy 関連の設定はどうなってますか?
# livejupiter
ProxyPass /livejupiter/SETTING.TXT !
ProxyPass /livejupiter/ http://live22x.2ch.net/livejupiter/
ProxyPassReverse /livejupiter/ http://live22x.2ch.net/livejupiter/
です。
427▲ ◆cZfSunOs.U
2005/12/06(火) 02:44:03ID:iYd2v5pK0 >>425 了解です.zz_filesize の型は良かったのですが,
>*p = '\0' ;
があるので apr_brigade_pflatten() のところはこうした方がよさそうです.
- apr_brigade_pflatten(f.ctx, &ch2->BigBuffer, &ch2->zz_filesize, r->pool);
+ apr_off_t blen;
+ apr_brigade_length(f.ctx, 1, &blen);
+ ch2->zz_filesize = blen;
+ ch2->BigBuffer = apr_palloc(r->pool, ch2->zz_filesize + 1);
+ apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
>>426 了解です.特に問題はなさそうですね.何が起こってるのかトレースできればいいんですが......
>*p = '\0' ;
があるので apr_brigade_pflatten() のところはこうした方がよさそうです.
- apr_brigade_pflatten(f.ctx, &ch2->BigBuffer, &ch2->zz_filesize, r->pool);
+ apr_off_t blen;
+ apr_brigade_length(f.ctx, 1, &blen);
+ ch2->zz_filesize = blen;
+ ch2->BigBuffer = apr_palloc(r->pool, ch2->zz_filesize + 1);
+ apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
>>426 了解です.特に問題はなさそうですね.何が起こってるのかトレースできればいいんですが......
428root▲ ★
NGNG430▲ ◆cZfSunOs.U
2005/12/06(火) 03:07:50ID:iYd2v5pK0 >>428 なるほど.とするとこんな感じですか......
apr_off_t blen;
apr_brigade_length(f.ctx, 1, &blen);
if ((ch2->zz_filesize = blen) >= SZ_BIGBUF)
return 何かのエラー番号;
apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
# デカい構造体をスタックに確保するってのはちょっと不安があるわけですが,
# 今までそれで動いてたのなら今回の問題とは無関係だろうということで......
で......死んだ時の core のバックトレースを取るとか,truss でトレースするとか
できますでしょうか......?
apr_off_t blen;
apr_brigade_length(f.ctx, 1, &blen);
if ((ch2->zz_filesize = blen) >= SZ_BIGBUF)
return 何かのエラー番号;
apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
# デカい構造体をスタックに確保するってのはちょっと不安があるわけですが,
# 今までそれで動いてたのなら今回の問題とは無関係だろうということで......
で......死んだ時の core のバックトレースを取るとか,truss でトレースするとか
できますでしょうか......?
431root▲ ★
NGNG 現在のもの:
+#ifdef SNOWMAN
+static apr_status_t rdat_filter(ap_filter_t *f, apr_bucket_brigade *b)
+{
+ return ap_save_brigade(f, (apr_bucket_brigade **)&f->ctx, &b, f->r->pool);
+}
+#endif
+#ifdef SNOWMAN
+ int rv;
+#if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0};
+#else
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL};
+#endif
+ ap_filter_t f = {&frec, NULL, NULL, r, r->connection};
+ char *uri = apr_pstrcat(r->pool, "/", ch2->zz_ita, "/dat/", ch2->zz_key, ".dat", NULL);
+ request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f);
+
+ if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) {
+ apr_off_t blen;
+ apr_brigade_length(f.ctx, 1, &blen);
+ ch2->zz_filesize = blen;
+ apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
+ apr_brigade_destroy(f.ctx);
+ ch2->zz_mtime = rdat->mtime ? rdat->mtime
+ : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified"));
+ }
+ ap_destroy_sub_req(rdat);
+
+ if (!rv) {
+ ch2->where = W_LIVE;
+ return 1;
+ }
+#else
(続く)
+#ifdef SNOWMAN
+static apr_status_t rdat_filter(ap_filter_t *f, apr_bucket_brigade *b)
+{
+ return ap_save_brigade(f, (apr_bucket_brigade **)&f->ctx, &b, f->r->pool);
+}
+#endif
+#ifdef SNOWMAN
+ int rv;
+#if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0};
+#else
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL};
+#endif
+ ap_filter_t f = {&frec, NULL, NULL, r, r->connection};
+ char *uri = apr_pstrcat(r->pool, "/", ch2->zz_ita, "/dat/", ch2->zz_key, ".dat", NULL);
+ request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f);
+
+ if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) {
+ apr_off_t blen;
+ apr_brigade_length(f.ctx, 1, &blen);
+ ch2->zz_filesize = blen;
+ apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
+ apr_brigade_destroy(f.ctx);
+ ch2->zz_mtime = rdat->mtime ? rdat->mtime
+ : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified"));
+ }
+ ap_destroy_sub_req(rdat);
+
+ if (!rv) {
+ ch2->where = W_LIVE;
+ return 1;
+ }
+#else
(続く)
433root▲ ★
NGNG if(ch2->zz_filesize > SZ_BIGMAX) return 3002 ;
だから、3002でいいのかな。
だから、3002でいいのかな。
434root▲ ★
NGNG ということで、今こうです。
結果は同じか。
で、core dumpとってみるです。
+#ifdef SNOWMAN
+ int rv;
+#if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0};
+#else
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL};
+#endif
+ ap_filter_t f = {&frec, NULL, NULL, r, r->connection};
+ char *uri = apr_pstrcat(r->pool, "/", ch2->zz_ita, "/dat/", ch2->zz_key, ".dat", NULL);
+ request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f);
+
+ if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) {
+ apr_off_t blen;
+ apr_brigade_length(f.ctx, 1, &blen);
+ if ((ch2->zz_filesize = blen) >= SZ_BIGBUF)
+ return 3002;
+ apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
+ apr_brigade_destroy(f.ctx);
+ ch2->zz_mtime = rdat->mtime ? rdat->mtime
+ : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified"));
+ }
+ ap_destroy_sub_req(rdat);
+
+ if (!rv) {
+ ch2->where = W_LIVE;
+ return 1;
+ }
+#else
結果は同じか。
で、core dumpとってみるです。
+#ifdef SNOWMAN
+ int rv;
+#if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0};
+#else
+ ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL};
+#endif
+ ap_filter_t f = {&frec, NULL, NULL, r, r->connection};
+ char *uri = apr_pstrcat(r->pool, "/", ch2->zz_ita, "/dat/", ch2->zz_key, ".dat", NULL);
+ request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f);
+
+ if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) {
+ apr_off_t blen;
+ apr_brigade_length(f.ctx, 1, &blen);
+ if ((ch2->zz_filesize = blen) >= SZ_BIGBUF)
+ return 3002;
+ apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize);
+ apr_brigade_destroy(f.ctx);
+ ch2->zz_mtime = rdat->mtime ? rdat->mtime
+ : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified"));
+ }
+ ap_destroy_sub_req(rdat);
+
+ if (!rv) {
+ ch2->where = W_LIVE;
+ return 1;
+ }
+#else
435▲ ◆cZfSunOs.U
2005/12/06(火) 03:16:17ID:iYd2v5pK0437root▲ ★
NGNG ううむ、core dumpしないみたいです。
[Mon Dec 05 10:25:09 2005] [notice] child pid 74701 exit signal Segmentation fault (11)
# XXX
CoreDumpDirectory /tmp
を、httpd.conf に書いたのですが。
[Mon Dec 05 10:25:09 2005] [notice] child pid 74701 exit signal Segmentation fault (11)
# XXX
CoreDumpDirectory /tmp
を、httpd.conf に書いたのですが。
438▲ ◆cZfSunOs.U
2005/12/06(火) 03:35:45ID:iYd2v5pK0439root▲ ★
NGNG440▲ ◆cZfSunOs.U
2005/12/06(火) 03:47:48ID:iYd2v5pK0 そうか.....httpd が最初に root で立ち上がってると OS のデフォルトでは
core 吐かないようになってるのかな......とすると,とりあえず直接 User
ディレクティブで指定してるユーザで立ち上げてみるとか......
core 吐かないようになってるのかな......とすると,とりあえず直接 User
ディレクティブで指定してるユーザで立ち上げてみるとか......
441root▲ ★
NGNG 302 みたいです。<= rdat->status
443root▲ ★
NGNG 200 だなぁ。ちゃんと。
444root▲ ★
NGNG core dumpしてるの、ここじゃないですね。
もっとあとみたい。
もっとあとみたい。
445root▲ ★
NGNG ap_rprintf(r, "%s\n", ch2->BigBuffer);
ってやっても、なんかちゃんと出ないみたい。
ってやっても、なんかちゃんと出ないみたい。
447root▲ ★
NGNG -funsigned-char しているせいかなぁ、、、。
448root▲ ★
NGNG strlen(ch2->BigBuffer) が、3らしい。ううむ。
449▲ ◆cZfSunOs.U
2005/12/06(火) 04:33:03ID:iYd2v5pK0 う〜む......原因もつかめないとすると......サブリクエスト方式をやめて
ソケットで localhost に取りに行く方式にした方がいいんですかねぇ.
read.cgi 1呼び出しごとに2プロセス消費することになっちゃいますが......
ソケットで localhost に取りに行く方式にした方がいいんですかねぇ.
read.cgi 1呼び出しごとに2プロセス消費することになっちゃいますが......
452root▲ ★
NGNG バッファを大域変数でとってみたけど、同じだった。
apr_brigade_flatten のところが、ちゃんと動いていない??
apr_brigade_flatten のところが、ちゃんと動いていない??
453▲ ◆cZfSunOs.U
2005/12/06(火) 04:47:52ID:iYd2v5pK0 ch2->zz_filesize はどうですか......?
454root▲ ★
NGNG http://live22x1.2ch.net/test/read.cgi/livejupiter/9240000003/
を読んで、
ap_rprintf(r, "%d\n", ch2->zz_filesize);
ってやったら、832 って出たです。
実際には、1428バイトあるですね。
を読んで、
ap_rprintf(r, "%d\n", ch2->zz_filesize);
ってやったら、832 って出たです。
実際には、1428バイトあるですね。
2005/12/06(火) 04:54:01ID:JNumL22n0
1f 8b 8 0はgzipか
457root▲ ★
NGNG ってことは、、、。
ここは1Gbps内部接続だし、圧縮はなくてもいいような気もするです。
ここは1Gbps内部接続だし、圧縮はなくてもいいような気もするです。
458root▲ ★
NGNG どうすんのがいいのかな。
live22のhttpdでgzipしないようにする? のも、いまいちだなぁ。
サブリクエスト(って言うんでしたっけ)の時に、no gzip にできないのかしら。
live22のhttpdでgzipしないようにする? のも、いまいちだなぁ。
サブリクエスト(って言うんでしたっけ)の時に、no gzip にできないのかしら。
459root▲ ★
NGNG ううむ、
こりゃ、live22側のhttpdをごにょごにょするほうがよさげですね。
SetEnvIfか何か使うか。
こりゃ、live22側のhttpdをごにょごにょするほうがよさげですね。
SetEnvIfか何か使うか。
460root▲ ★
NGNG live22のhttpdでmod_defleteをはずしてみたら、できたー。
http://live22x1.2ch.net/test/read.cgi/livejupiter/1133132580/
http://live22x1.2ch.net/test/read.cgi/livejupiter/1133132580/
461root▲ ★
NGNG ってことは、
・フロントエンドからのリクエストだったら、gzipかからないようにする
で、いけるのか。
やろう、やろう。
・フロントエンドからのリクエストだったら、gzipかからないようにする
で、いけるのか。
やろう、やろう。
462root▲ ★
NGNG うーむ、、、。諸事情によりmod_rpaf使っているからなぁ。
REMOTE_ADDRではできないのか。
どうすべ。
REMOTE_ADDRではできないのか。
どうすべ。
463root▲ ★
NGNG とりあえず、後で考えることにして、
mod_deflateはずしておこう。 @ live22
で、read.cgiを入れてみるか。
mod_deflateはずしておこう。 @ live22
で、read.cgiを入れてみるか。
2005/12/06(火) 05:19:07ID:boYqBZIZ0
355 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:04:33
なぜか read.cgi スレで「連続投稿ですか?10回」とか出てしまうんで一時避難でこちらへ......
>>455-458 むむ......ってことは......
apr_table_set(r->subprocess_env, "no-gzip", "");
を ap_run_sub_req() の前に実行かな......
356 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:13:01
apr_table_unset(r->headers_in, "Accept-Encoding");
も入れた方がいいかな......
# 相変わらずあっちに書けないんでどなたか転載して頂けると助かります......
357 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:14:25
間違えた...... r じゃなくて rdat じゃないとダメです.
apr_table_set(rdat->subprocess_env, "no-gzip", "");
apr_table_unset(rdat->headers_in, "Accept-Encoding");
なぜか read.cgi スレで「連続投稿ですか?10回」とか出てしまうんで一時避難でこちらへ......
>>455-458 むむ......ってことは......
apr_table_set(r->subprocess_env, "no-gzip", "");
を ap_run_sub_req() の前に実行かな......
356 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:13:01
apr_table_unset(r->headers_in, "Accept-Encoding");
も入れた方がいいかな......
# 相変わらずあっちに書けないんでどなたか転載して頂けると助かります......
357 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:14:25
間違えた...... r じゃなくて rdat じゃないとダメです.
apr_table_set(rdat->subprocess_env, "no-gzip", "");
apr_table_unset(rdat->headers_in, "Accept-Encoding");
466root▲ ★
NGNG まだ #ifdef しているけど、フロント動作版 read.cgi を live22x[123] に入れた。
これで、大会前の準備はほぼすべて整いました。
深夜までつきあっていただいた SunOS さん、
それから神様 >>455 さん、ありがとう、ありがとう。
これで、大会前の準備はほぼすべて整いました。
深夜までつきあっていただいた SunOS さん、
それから神様 >>455 さん、ありがとう、ありがとう。
2005/12/06(火) 06:13:15ID:JNumL22n0
rdat(rnew)のヘッダいじるとrにも反映される予感。
2.0と2.2でちょっと違うけど、
rnew->headers_in = r->headers_in;
こんな風になってる。
envはコピーのようだけど。
rnew->subprocess_env = apr_table_copy(rnew->pool, r->subprocess_env);
2.0と2.2でちょっと違うけど、
rnew->headers_in = r->headers_in;
こんな風になってる。
envはコピーのようだけど。
rnew->subprocess_env = apr_table_copy(rnew->pool, r->subprocess_env);
468▲ ◆cZfSunOs.U
2005/12/06(火) 08:22:29ID:tmMnLjck0 >>467 おぉ......となると,こうすべきですね.
# "no-gzip" は多分なしで平気ですね.
rdat->headers_in = apr_table_copy(rdat->pool, rdat->headers_in);
apr_table_unset(rdat->headers_in, "Accept-Encoding");
# "no-gzip" は多分なしで平気ですね.
rdat->headers_in = apr_table_copy(rdat->pool, rdat->headers_in);
apr_table_unset(rdat->headers_in, "Accept-Encoding");
469root▲ ★
2005/12/06(火) 11:23:53ID:???0 >>468
組み込みます。
で、昨日の会話でわかったのは、
Apache 2.2系と2.0系のread.cgiでは、バイナリレベルでの互換性がなくなるってことすね。
いずれ2.2化する時には、注意しないと。
組み込みます。
で、昨日の会話でわかったのは、
Apache 2.2系と2.0系のread.cgiでは、バイナリレベルでの互換性がなくなるってことすね。
いずれ2.2化する時には、注意しないと。
470root▲ ★
2005/12/06(火) 11:29:13ID:???0 live22x[123] に、read.cgi の広告を配布するようにした。
471▲ ◆cZfSunOs.U
2005/12/06(火) 22:37:17ID:iYd2v5pK0 緊急の問題ではないですが,ここ(スタックにデカい配列・構造体を確保)が
やはりちょっと気がかりではあります.
>>428
>CH2READ ch2 ;
>char BigBuffer[SZ_BIGBUF] ;
現状では一応問題なしのようですが,もし今後マルチスレッド MPM を使用するとなると......
メイン以外のスレッドに割り当てられるデフォルトのスタックサイズはメインのより小さいです.
ulimit での指定もメイン以外のスレッドには効きません.FreeBSD での具体的数値は
わかりませんが,Solaris では 1MB(32-bit) / 2MB(64-bit) がデフォルトです.
そして,dat の最大サイズが 512kB となると......
もちろん global / static 変数はマルチスレッドではマズいんで,apr_palloc() で
ヒープ領域に確保するようにした方がよさそうです.Apache 2.2 では ThreadStackSize で
スタックサイズを指定可能なんで,それで乗り切るって手もなくはないですが......
やはりちょっと気がかりではあります.
>>428
>CH2READ ch2 ;
>char BigBuffer[SZ_BIGBUF] ;
現状では一応問題なしのようですが,もし今後マルチスレッド MPM を使用するとなると......
メイン以外のスレッドに割り当てられるデフォルトのスタックサイズはメインのより小さいです.
ulimit での指定もメイン以外のスレッドには効きません.FreeBSD での具体的数値は
わかりませんが,Solaris では 1MB(32-bit) / 2MB(64-bit) がデフォルトです.
そして,dat の最大サイズが 512kB となると......
もちろん global / static 変数はマルチスレッドではマズいんで,apr_palloc() で
ヒープ領域に確保するようにした方がよさそうです.Apache 2.2 では ThreadStackSize で
スタックサイズを指定可能なんで,それで乗り切るって手もなくはないですが......
472root▲ ★
2005/12/07(水) 00:13:51ID:???0473▲ ◆cZfSunOs.U
2005/12/07(水) 00:25:35ID:jJ+aJrde0 >>472 malloc() だと明示的な解放が必要ですが,apr_palloc() ではプールの寿命が尽きた時点で自動解放されます.
例えばリクエストプール (r->pool) で確保すれば,リクエスト処理が完了した時点で自動解放されます.
例えばリクエストプール (r->pool) で確保すれば,リクエスト処理が完了した時点で自動解放されます.
475root▲ ★
NGNG 【きりたんぽ】雪だるま作戦に思いを馳せながら雑談するスレッド Part28
http://aa5.2ch.net/test/read.cgi/nanmin/1133468879/739-740
739 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/12/07(水) 12:05:52 ?###
過去ログにいったやつが、うまく出ないみたい。< フロント版read.cgi
だめな例: 基本的にdat落ちしたやつ全部
http://live22x.2ch.net/test/read.cgi/dancesite/1115133136/
あとで、みてみるということで。
740 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/12/07(水) 12:24:56 ?###
>>739
なおした。
read.cgi ver 05.0.2.1 2005/12/07
ライブなdatじゃない場合は、通常と同じ方法でディスクを参照。
http://aa5.2ch.net/test/read.cgi/nanmin/1133468879/739-740
739 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/12/07(水) 12:05:52 ?###
過去ログにいったやつが、うまく出ないみたい。< フロント版read.cgi
だめな例: 基本的にdat落ちしたやつ全部
http://live22x.2ch.net/test/read.cgi/dancesite/1115133136/
あとで、みてみるということで。
740 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/12/07(水) 12:24:56 ?###
>>739
なおした。
read.cgi ver 05.0.2.1 2005/12/07
ライブなdatじゃない場合は、通常と同じ方法でディスクを参照。
476▲ ◆cZfSunOs.U
2005/12/07(水) 13:01:22ID:CyXQfn3E0 >>475 乙です.
----------------------------------------------------------------------
以前 worker MPM を試してみたら SIGBUS になってしまったことがありましたが,
http://aa5.2ch.net/test/read.cgi/nanmin/1118138260/278-279n
これは >>471 の要因でスタック領域からはみ出てしまってたのかも知れませんね.
----------------------------------------------------------------------
以前 worker MPM を試してみたら SIGBUS になってしまったことがありましたが,
http://aa5.2ch.net/test/read.cgi/nanmin/1118138260/278-279n
これは >>471 の要因でスタック領域からはみ出てしまってたのかも知れませんね.
477root▲ ★
2005/12/07(水) 14:59:46ID:???0478▲ ◆cZfSunOs.U
2005/12/07(水) 15:48:25ID:CyXQfn3E0 >>477 そのあたりはこういうことで.
# これを受けての worker MPM 挑戦だったわけで......
http://aa5.2ch.net/test/read.cgi/nanmin/1118138260/147
>そういえば...... 今 SpeedyCGI は speedy プロセス呼び出しの形で使ってますか?
>mod_speedycgi だとマルチスレッド非対応ですが,speedy プロセス呼び出しなら無関係なんで
>マルチスレッド化も可能ではあるんですが......
# これを受けての worker MPM 挑戦だったわけで......
http://aa5.2ch.net/test/read.cgi/nanmin/1118138260/147
>そういえば...... 今 SpeedyCGI は speedy プロセス呼び出しの形で使ってますか?
>mod_speedycgi だとマルチスレッド非対応ですが,speedy プロセス呼び出しなら無関係なんで
>マルチスレッド化も可能ではあるんですが......
480root▲ ★
NGNG でも、再チャレンジする場合、read.cgi で使用している外部関数が、
全部MT-safeじゃないと、いまいちなわけか。
全部MT-safeじゃないと、いまいちなわけか。
481▲ ◆cZfSunOs.U
2005/12/07(水) 21:48:37ID:jJ+aJrde0 >>480 APR 関数は基本的に,内部では Unsafe な関数の使用を避け (MT-)Safe になるよう
配慮されているため,APR 関数を使っているのならおおかた大丈夫かと思います.
ただ,呼び出す関数が (MT-)Safe であっても,処理の流れなどに起因して
マルチスレッド環境で問題が起こることもあり得るので(今回出てきた
スタック上の巨大変数もしかり),その点が要注意ではありますが.
配慮されているため,APR 関数を使っているのならおおかた大丈夫かと思います.
ただ,呼び出す関数が (MT-)Safe であっても,処理の流れなどに起因して
マルチスレッド環境で問題が起こることもあり得るので(今回出てきた
スタック上の巨大変数もしかり),その点が要注意ではありますが.
482▲ ◆cZfSunOs.U
2005/12/10(土) 02:12:29ID:1jtGNzJ50 #include <pthread.h>
#include <stdio.h>
int main()
{
size_t size;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_getstacksize(&attr, &size);
printf("%lu\n", (unsigned long)size);
return 0;
}
----------------------------------------------------------------------
ってのを tiger (FreeBSD 5.3R) 上でやってみたら,libpthread / libthr ともに
65536 (64kB) だそうです.そりゃはみ出しますね......
#include <stdio.h>
int main()
{
size_t size;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_getstacksize(&attr, &size);
printf("%lu\n", (unsigned long)size);
return 0;
}
----------------------------------------------------------------------
ってのを tiger (FreeBSD 5.3R) 上でやってみたら,libpthread / libthr ともに
65536 (64kB) だそうです.そりゃはみ出しますね......
484root▲ ★
2005/12/10(土) 18:48:40ID:???0 /* datを読むバッファ領域を、apr_pallocで動的に確保する */
ch2->BigBuffer = apr_palloc(r->pool, SZ_BIGBUF);
にしたバージョンを、live22x2で試しました。
問題なさげ。
dso.2ch.netでも問題なければ、これで。
ch2->BigBuffer = apr_palloc(r->pool, SZ_BIGBUF);
にしたバージョンを、live22x2で試しました。
問題なさげ。
dso.2ch.netでも問題なければ、これで。
486root▲ ★
2005/12/10(土) 19:20:11ID:???0 ということで配布して20分ほど経ちましたが、
read.cgi が多い news19 / life7 / hobby あたりでも、問題なさげすね。
read.cgi が多い news19 / life7 / hobby あたりでも、問題なさげすね。
487動け動けウゴウゴ2ちゃんねる
2005/12/13(火) 23:39:10ID:FqXxoMfA02005/12/14(水) 16:49:28ID:ph7PVQZB0
read.cの
#defineLINK_URL_MAXLEN256
これ。なんか大きすぎない?
普通200以上超えるURLは無いと思うんだが。
#defineLINK_URL_MAXLEN256
これ。なんか大きすぎない?
普通200以上超えるURLは無いと思うんだが。
2005/12/14(水) 16:53:26ID:ph7PVQZB0
ミスorz
#define LINK_URL_MAXLEN 256
タブは無視されるのを忘れてたよママン
#define LINK_URL_MAXLEN 256
タブは無視されるのを忘れてたよママン
491root▲ ★
2005/12/14(水) 19:14:38ID:???0 で、今のソースもちと見てみましたが、
もっと大きな値になっているようです。
もっと大きな値になっているようです。
492489
2005/12/15(木) 16:51:58ID:7K9YjLFu02005/12/15(木) 21:53:19ID:j3gv2dLj0
2005/12/17(土) 09:55:14ID:1ubCo5sc0
>>493誤爆?
2005/12/17(土) 10:57:14ID:pYb4F0nD0
496動け動けウゴウゴ2ちゃんねる
2005/12/26(月) 01:22:01ID:8tK54p4F0497動け動けウゴウゴ2ちゃんねる
2006/01/13(金) 21:06:08ID:kVBuC36P0 ■>>2-のようにアンカーにハイフンがつきそのあとに数字がないと
アンカーそのものが無効になる不具合
アンカーそのものが無効になる不具合
2006/01/13(金) 23:47:35ID:kVBuC36P0
>>2-20でもダメか
499root▲ ★
2006/01/14(土) 01:11:19ID:???0 何と2ちゃんねるのbbs.cgiで公式にサポートされているのは、
つまり、書き込み時に dat 内にリンクとして埋め込まれるのは、
>>mmm
と、
>>mmm-nnn
の2パターンだけなのです。
bbs.cgi は、わざわざそのように書かれています。
つまり右側に数字がないのは、アンカーではないことになります。
昨年 bbs.cgi をきっちり読むまで、
実は私もこのことは知りませんでした。はい。
つまり、書き込み時に dat 内にリンクとして埋め込まれるのは、
>>mmm
と、
>>mmm-nnn
の2パターンだけなのです。
bbs.cgi は、わざわざそのように書かれています。
つまり右側に数字がないのは、アンカーではないことになります。
昨年 bbs.cgi をきっちり読むまで、
実は私もこのことは知りませんでした。はい。
2006/01/14(土) 21:01:58ID:CQZR/2It0
read.cgi っていつまで test フォルダに入ってるの?
2006/01/14(土) 23:44:26ID:BiVc6yby0
2006/01/15(日) 00:00:01ID:EB9SH0eJ0
2006/01/15(日) 12:30:16ID:H9CLpF890
506名無しさんの助言 ◆JogenOuJ66
2006/01/15(日) 15:36:04ID:g76KPmMt0 >逆に言えば、新スキームを導入することができたら
めんどくさがって実行しない、に一票。
めんどくさがって実行しない、に一票。
507505
2006/01/15(日) 15:49:55ID:H9CLpF890 >>506
現に困ってる人は(あまり)いないし、うrlがカコワルイ程度だからねー
個人的には、板移転時のキレイさを鑑みて、板毎virtual host化
してほしいな〜と。DNS更新もメンドくさくなくなったようですし
そこんところどうなんでしょう?
現に困ってる人は(あまり)いないし、うrlがカコワルイ程度だからねー
個人的には、板移転時のキレイさを鑑みて、板毎virtual host化
してほしいな〜と。DNS更新もメンドくさくなくなったようですし
そこんところどうなんでしょう?
508掃除屋 ◆2ch..Ybe0Q
2006/01/15(日) 16:56:26ID:EB9SH0eJ0 理想は、
板トップ
http://2ch.net/board/
スレは
http://2ch.net/board/key/
雪だるまサーバ+read.cgiにPATH_INFOを使えばいいんだ!
(かなり面倒くさいでしょうが
板トップ
http://2ch.net/board/
スレは
http://2ch.net/board/key/
雪だるまサーバ+read.cgiにPATH_INFOを使えばいいんだ!
(かなり面倒くさいでしょうが
509名無しさんの助言 ◆JogenOuJ66
2006/01/15(日) 18:27:44ID:g76KPmMt0 >雪だるまサーバ+read.cgiにPATH_INFOを使えばいいんだ!
>(かなり面倒くさいでしょうが
めんどk(ry
>(かなり面倒くさいでしょうが
めんどk(ry
2006/01/17(火) 00:11:18ID:mq5c9UJn0
見た目はともかくURL短くすればかなり資源の節約になるんでは
2006/01/17(火) 09:03:28ID:qirymNFZO
url短くするのに資源がいる
512動け動けウゴウゴ2ちゃんねる
2006/01/20(金) 02:39:22ID:iyFLhQMN0 環境整備はあとからやったのでは意味がない
2006/03/06(月) 15:39:41ID:KkEPiJ5j0
ソースorファイル自体を公開。
まずはそれからだ。
まずはそれからだ。
514動け動けウゴウゴ2ちゃんねる
2006/03/18(土) 12:02:15ID:tXfMJrBE02006/03/19(日) 20:53:34ID:Wnc0Rh3P0
2006/03/22(水) 05:03:02ID:lgFid6IK0
そうそう、gz圧縮されてない9桁keyの過去ログを、read.cgiが
探せなくなってるんだよね。
全体的に。
探せなくなってるんだよね。
全体的に。
NGNG
9桁ってのがポイントなの
518root▲ ★
2006/04/19(水) 02:43:35ID:???0 read.cgi ver 05.0.2.6
live22x 系(雪だるま)で、read.cgi 動作ホストを部分的にするための準備工事。
具体的にはリンクに使用するホスト名を、live22xN.2ch.net のどれで指定しても、
live22x.2ch.net になるようにするコードを追加。
これで、mod_proxy で read.cgi 動作ホストを限定させることが可能になるはず。
こうすれば、全フロントに dat を rsync する必要がなくなるはず。
というもくろみで。
# offlaw.cgi も、mod_proxy で同じ設定をする必要あり。
live22x 系(雪だるま)で、read.cgi 動作ホストを部分的にするための準備工事。
具体的にはリンクに使用するホスト名を、live22xN.2ch.net のどれで指定しても、
live22x.2ch.net になるようにするコードを追加。
これで、mod_proxy で read.cgi 動作ホストを限定させることが可能になるはず。
こうすれば、全フロントに dat を rsync する必要がなくなるはず。
というもくろみで。
# offlaw.cgi も、mod_proxy で同じ設定をする必要あり。
519root▲ ★
NGNG で、なぜ >>518 の工事が必要になるかというと、
ProxyPass /test/read.cgi/ http://live22x2.2ch.net/test/read.cgi/
ProxyPassReverse /test/read.cgi/ http://live22x2.2ch.net/test/read.cgi/
といった指定をして、live22x2 に read.cgi を集めようとした場合、
read.cgi に渡されるホスト名が live22x2.2ch.net になってしまい、
上のほうの
■掲示板に戻る■ 全部 1- 最新50
のリンクに入るホスト名も、そのままだと live22x2 になってしまうため。
ProxyPass /test/read.cgi/ http://live22x2.2ch.net/test/read.cgi/
ProxyPassReverse /test/read.cgi/ http://live22x2.2ch.net/test/read.cgi/
といった指定をして、live22x2 に read.cgi を集めようとした場合、
read.cgi に渡されるホスト名が live22x2.2ch.net になってしまい、
上のほうの
■掲示板に戻る■ 全部 1- 最新50
のリンクに入るホスト名も、そのままだと live22x2 になってしまうため。
520root▲ ★
NGNG …というか、ここにホスト名って、ほんとは要らない、、、のかな。
ま、いっか。
今は考えないでおこうっと。
おふろ入ってきます。
ま、いっか。
今は考えないでおこうっと。
おふろ入ってきます。
521root▲ ★
NGNG あとは、rsync の仕組みを変える(多段化)とかかなぁ。
過去ログをみつけるところが問題なわけだから。
過去ログをみつけるところが問題なわけだから。
522root▲ ★
NGNG■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 『フジの社員は“文春ひどい”と騒いでいる』 フジテレビの窮地に「菅田将暉もドラマ出演を断った」「CMが全く売れていない」 [冬月記者★]
- 【クルマ】「軽自動車しか買えない」年収400万円時代の高すぎる自動車価格★4 [七波羅探題★]
- 日銀総裁、食料品値上がりを懸念 衆院委員会で「一時的でない」 ★3 [蚤の市★]
- 妻の暴言「お前はATMだ」 男性のDV被害相談が最多 男女平等意識高まりで顕在化 [ぐれ★]
- あぼーん
- 【女子サッカー】19歳谷川萌々子がバイエルンで初ゴール!スーパーミドルに加え、圧巻のドリブル突破からアシスト [久太郎★]
- 【飛行機】国内線初めて乗るんだけど半年前から座席予約するって変?普通どのくらい前からチケット買うの? [149414661]
- 【岸田悲報】報道記者「USAIDで騒いでる連中は陰謀論者を煮詰めた残りカスの地獄、まともな知能を持っている大人は近付いてはいけない」 [357222248]
- メルチュに強制捜査 折田楓さんは取り調べに「落ちた」模様 [462175752]
- この国は終わってるよ…〈年金月10万円〉〈時給1,280円〉週5のバイトで食いつなぐ79歳男性 [481941988]
- 🏡
- KAT-TUNが解散らしいがお前らKAT-TUNの歌一曲でも知ってる? [929293504]