read.cgi再開発スレ Part2
■ このスレッドは過去ログ倉庫に格納されています
◆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/ >>489
前は>>2-は>>2のアンカーとして機能してなかったっけ(ハイフンが黒になる) >>501
今日も実験、明日も、そしてあさっても(りゃ。むぎゅ。
一応書くと、アンカーは bbs.cgi だから。。 >>502
んーむ。
いずれにせよこれは、bbs.cgi の問題ですね(>>503 のとおり)。
そっちにリンク入れておくです。 >>501
逆に言えば、新スキームを導入することができたら
配置を変えられるって考えていいかな?
板名.2ch.net/read.cgi/スレ/ とか >逆に言えば、新スキームを導入することができたら
めんどくさがって実行しない、に一票。 >>506
現に困ってる人は(あまり)いないし、うrlがカコワルイ程度だからねー
個人的には、板移転時のキレイさを鑑みて、板毎virtual host化
してほしいな〜と。DNS更新もメンドくさくなくなったようですし
そこんところどうなんでしょう? 理想は、
板トップ
http://2ch.net/board/
スレは
http://2ch.net/board/key/
雪だるまサーバ+read.cgiにPATH_INFOを使えばいいんだ!
(かなり面倒くさいでしょうが >雪だるまサーバ+read.cgiにPATH_INFOを使えばいいんだ!
>(かなり面倒くさいでしょうが
めんどk(ry 見た目はともかくURL短くすればかなり資源の節約になるんでは ソースorファイル自体を公開。
まずはそれからだ。 そうそう、gz圧縮されてない9桁keyの過去ログを、read.cgiが
探せなくなってるんだよね。
全体的に。 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 で同じ設定をする必要あり。 で、なぜ >>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 になってしまうため。 …というか、ここにホスト名って、ほんとは要らない、、、のかな。
ま、いっか。
今は考えないでおこうっと。
おふろ入ってきます。 あとは、rsync の仕組みを変える(多段化)とかかなぁ。
過去ログをみつけるところが問題なわけだから。 ということで >>518 はあまり意味がないので、
追加したところを #if 0 〜 #endif で囲んでおこう。 http://qb5.2ch.net/test/read.cgi/operate/1145615267/443-453n
get.cgi の処理を 2ch 各鯖でやる部分(フロントエンド)と
p.2ch.io でやる部分(バックエンド)に分けるのも一案かな.
あるいは,もっと単純に mod_proxy + mod_cache などで
get.cgi の出力をキャッシュさせるって手も. 「関連キーワード」を上部ではなく本文中でリンクさせるとか.
----------------------------------------------------------------------
var keywords = ["麻", "豆腐", "婆", "operate", "感じ", "讃岐", "板"],
dds = document.getElementsByTagName("dd");
for (var i = 0; i < dds.length; i++)
for (var text = dds[i].firstChild; text; text = text.nextSibling) {
if (!text.data)
continue;
for (var j = 0, k; j < keywords.length; j++)
if ((k = text.data.indexOf(keywords[j])) >= 0) {
var a = document.createElement("a"), word = text.splitText(k);
word.splitText(keywords[j].length);
a.href = "http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=UTF-8&STR=" + encodeURIComponent(keywords[j]);
a.target = "_blank";
a.title = "関連キーワード";
a.style.borderBottom = "1px dotted black";
a.style.color = "black";
a.style.textDecoration = "none";
a.appendChild(document.createTextNode(word.data));
dds[i].replaceChild(a, word);
}
}
----------------------------------------------------------------------
この場合,JavaScript を入れるのは一番下に.それによる副次的効果として,
p.2ch.io が重くても表示への影響を軽減できる,ということも. read.cgi ver 05.0.4.1 2006/06/07
bbs.cgi再開発プロジェクト7
http://qb5.2ch.net/test/read.cgi/operate/1130918407/970
に対応。 で、例の機能をオンにしないといかんのか。< 管理人指定のやつだけ >>534 は既に対応済みだった模様。私がいじる前の状態に戻した。 この時間帯でもつぶれるようなので、
if 文を一つ入れて、キーワードを表示するサーバを制限した。
基本的に、管理人がオンにしたサーバだけになったはず。 read.cgiでNFSマウントしているディレクトリ配下に
アクセスしている部分を、mod_proxy化できれば、雪だるまの
フロントが詰まる現象はなくなるのかな?
なあ、俺になんか手伝えることないか?みんなのがんばり見てたら自分も何かしたくなってきた。 とりあえず、前スレ読んだら言語はCで開発みたいだけど、コンパイラは何使ってるの? 警察や自衛隊以外は 銃を持たせるなという法律がほしい
まじ 何考えてんだろ今の条約って sageやfusianaの判定は1バイト単位で良いけどread.cgiの変換は2バイト文字対応じゃないと困るな
JaneDoeは自前で処理できるから良いけど ぁ・・・ぁのう・・・SEX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! http://sunos.saita.ma/mod_cgidso.html
dso-example.cを見るに、Last-ModifiedとかETagとか304の実装は簡単そう。 http://qb5.2ch.net/test/read.cgi/operate/1149664022/81-n あたりの話.
例えば read.cgi 出力を mod_cache でキャッシュするとかいうことをやるとなれば,
Last-Mod 吐かないとキャッシュは正常に機能しないかと. 利用者側としては、Last-Modifiedが役立つ環境があって、
2ch側としては、入れたら困る理由がないのであれば、
入れちゃえばいいじゃん、と単純に思うのであった。 おお、途中送信
負荷が高くなると人大杉が発動するってことは、read.cgiが呼ばれること自体だけじゃなくて
read.cgiの処理そのものが負荷になるということなんでしょ。
そこで If-Modified-Sinceとか読み取って304を返せば負荷軽減になるってことだよな。
Last-Modifiedを返すだけで、そもそもリクエストが少なくなったり、途中のなんらかの
プロキシとかのキャッシュに正常に蓄えられるようになるし、>>549みたいなこともあるし、いいことだらけ。 >>553 それは bbs.cgi が生成する index.html の問題ですね.
例えば /BE:(\d+)-(\S*)/ のような regex で BE のデータを抽出した場合
<font color=...> 内のスペースのところでちょん切れるのが原因なんだろうけど,
まぁいずれにせよ,最低限 <font> タグ直接埋め込みはやめた方がいいような.
カラフルに修飾するのは be.js が受け持ちますよ,ってことで...... ここじゃ騒ぎが大きくなりすぎや! ガッツ石松がかぎつける前に場所を変えるで!おめぇらついて来い! ここじゃ騒ぎが大きくなりすぎや! ガッツ石松がかぎつける前に場所を変えるで!おめぇらついて来い!
>>553-554
ふむ、、、。
bbs.cgi 側でごにょごにょってかんじで。 2chブラウザに付けたいのですが
2chのread.cgiのソースは公開していないのですよね?
read.cgiってC言語で書かれているんですね
知らなかった… http://pc8.2ch.net/test/read.cgi/mysv/1141810775/951
ap_rputs() を使ってるとこをちょっと工夫すると
約1.4倍高速化するらしいですよ。(ソースコード有り) read.cgi の場合その前に最適化すべき所があるような気がしますけど... >>571 なるほど......それは他に ap_rprintf() などにも共通のようですね.
ちなみに,現行 read.cgi では全部 ap_rprintf() を使ってる模様.
>>572 確かにそう思う部分もなきにしもあらず......ですが,今はどちらかと言えば
JavaScript 版 read.html の実用化を目指すというのが流れかな...... 指令が出たような気がしないでもない
p2.2ch.net総合スレ(不具合報告スレ Part13)
http://qb5.2ch.net/test/read.cgi/operate/1155610565/554+561
554 名前:動け動けウゴウゴ2ちゃんねる[sage] 投稿日:2006/09/16(土) 22:26:11 ID:2Qi8OQ4FP
つか、いつの間にか
p2.2ch.net総合スレ(不具合報告スレ Part13)
ttp://qb5.2ch.net/test/read.cgi/operate/1155610565/1,3,5,7
が、一纏めで>>1のみになってる
この場合、3、5、7がリンクから飛べないから、以前の仕様に戻して欲しい
勿論1、3、5、7が一気に表示された方がいいけど
561 名前:ひろゆき@どうやら管理人 ★[] 投稿日:2006/09/18(月) 12:46:39 ID:???0 ?DIA(33417)
2chのread.cgiも>>554に対応させたいなぁと思う昨今です。 read.htmlが対応してるのはわかるけど
> read.html を実用化すれば対応することになる
っていうのはちょっと違うような気がするな >>576 まぁ,ひろゆきさんの発言の真意がわからないと正確なことは言えないでしょうけど......
ただ,read.html (JavaScript 版 read.cgi) 自体がひろゆきさんの発言からスタートし,
これが従来の DSO 版 read.cgi に代わってメインとなり,DSO 版は read.html 非対応ブラウザ
などへ対処するための補完的なものになる,という方向なんで......
# もっとも,この方針が変更されるのなら話は変わってくるでしょうけど. >>577
>>576はひろゆきの言いたいこととは違うという意味ではないので
> ひろゆきさんの発言の真意
はあまり関係がないので念のため >>177の確認
http://www.2ch.net/il|li/test.test/
ちなみにhtml化された過去ログではリンクが有効になってる あのさ
https://qb5.2ch.net/test/read.cgi/operate/1105909861/
ftp://qb5.2ch.net/test/read.cgi/operate/1105909861/
これもこのスレにリダイレクトしてもらえるとhttp15個規制の回避に使えるんだけど
どうかね それか2ちゃんの鯖名で始まるアドレスはhttpなしでリンク有効化してもらうとか read.cgi 内で,read.html ファイルが存在しかつ Cookie で JavaScript モードに設定されている場合は
read.html を返す ( http://qb5.2ch.net/test/read.cgi/operate/1163825500/556 ) ってのを入れてみますた.
さらに,
・ pastdat.so / anydat.so を利用した雪だるま過去ログ対応.
( http://qb5.2ch.net/test/read.cgi/operate/1153650861/763-770n )
・ thread safety 問題の fix(前ちょっとメールで言ってたやつ).
ってのもやりますた.まだ配布はしてませんが dso で動いてます. >>584
おつです。
read.cgi の配布方法も、
そろそろ情報共有しないといけなそうなかんじで(後で別途メールするです)。 >>584
> ・ thread safety 問題の fix(前ちょっとメールで言ってたやつ).
これって、主に雪だるまサーバ(worker MPM)で発生していた、
超高負荷時にフロントエンドの httpd が signal 10 で落ちるのが観測されるのが、
改善するかもしれない、ということなのかしら。 >>586 何が原因で落ちてたのかわかりませんが,マルチスレッド環境での
race condition によるものだとすれば改善される可能性はありますね.
まぁ,いずれにせよ worker MPM で使ってる read.cgi は入れ替えた方がいいですが. >>588 先ほどの read.cgi 更新時に一時的におかしかったですが,もう直ってるかと. >>587
live22x, live23, news20 の read.cgi を入れ替えました。
(昨日の作業で)
また、ex11 の read.cgi をさきほど入れ替えました。
これで、高負荷時(今日の昼とか)の httpd 不安定が解消するとうれしいなと。
# ex11 は worker MPM で動作中。 ちと、ひとつ質問です。
ソースを見ると、
#if APR_HAS_THREADS
...
#endif
などとなっていますが、
これは read.cgi バイナリが APR_HAS_THREADS がある時とない時で、
違うものになる、ということなのかしら。 >>591
コンパイルする時にどちらを生成するかじゃないの? ああ、ちょっと文章の解釈間違えてたかも
>>591
多分あなたが思ってる通りだと思います
ようはバイナリ生成時にAPR_HAS_THREADSが定義されてるかされてないかによって
#ifと#endifの間の行が評価されるかされないかが決まるってことですね >>591 そういうことですね.worker MPM に入れるやつは,apr.h を見て
#define APR_HAS_THREAD 1
な鯖でビルドしてもらうということで(その #if...#endif を入れないと,
#define APR_HAS_THREAD 0 な環境でのビルドでエラーになってしまう). >>595
了解です。
APR_HAS_THREAD なサーバかどうかで、
バイナリ互換がなくなるという認識でいいのかしら。
ちなみに 2ch のApache 2.2 な掲示板サーバは APR_HAS_THREAD が 1 なので、
現在の作り方で、今のところは ok と。 >>596
>APR_HAS_THREAD なサーバかどうかで、
>バイナリ互換がなくなるという認識でいいのかしら。
基本的にはそうですね.もうちょっと詳しく述べると
・ !APR_HAS_THREAD な環境でビルドしたバイナリは,prefork MPM で使う限り
!APR_HAS_THREAD, APR_HAS_THREAD どちらの環境でも使える(worker MPM では unsafe).
・ APR_HAS_THREAD な環境でビルドしたバイナリは,APR_HAS_THREAD な環境でのみ
使える(prefork MPM でも Ok).!APR_HAS_THREAD な環境では dlopen() の
時点でシンボルがないとかいうエラーになるはず.
先生! 要望がありまつ♪
「新着レスの表示」というのが画面中央に表示されているでつが、
IE6でウィンドウを全画面に開いていると、気が付かないでつ。
最新50の右側に置いたほうが よくないでつか? 倉庫落ち表示が変わってたんだねー。
最終レスが表示されなくなって、うまくすれば次スレ誘導が表示されていたのが
されなくなってしょんぼり。
頭で倉庫落ちを強調するのは良し。
ソフトウェア板は移転してるだよ
http://pc7.2ch.net/software/ 最終レス番号くらい見えれば、どこまでのdatを持っているのか分かるのに。 ■ このスレッドは過去ログ倉庫に格納されています