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/ で、なぜ >>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を持っているのか分かるのに。 「調子の悪いスレッドの修理承り口」スレにて、以下のようなお話がございました。 掻い摘んで申しますと、過去何度か行われたbeの仕様変更の内の一つが、 read.cgiでは表示されないというものでございます。 もう既に廃止された一時的な仕様のようでございますので、 基本的にはレス削除で対応するべきかと考えているのですが、 もし仮に、read.cgiにて容易に対応可能であれば、 そちらの方がよいのは申すまでもないことだと思いますので、こちらでご報告させて頂きました。 よろしければ、一度ご検討くださればと思います。 http://etc6.2ch.net/test/read.cgi/be/1101017559/933- 原因と思われる箇所 http://etc6.2ch.net/test/read.cgi/be/1101017559/450-451 名無しさん@お腹いっぱい。 <><>05/02/02 17:07:04 ID:5mtV+yhn <BE:8020962/0><> あげ <> 名無しさん@お腹いっぱい。 <><>05/02/02 17:46:46 ID:5k9kH1P1 <BE:22914353/0><> ?#をレベル表示にしようとしてる為にバグバグなのかしら? <> >>605 これは...... be 鯖から etc に移転する際に,BE 形式の変換漏れがあったってことかな. たぶんその部分を再変換すればいいような肝...... きちんと表示できるようになりました〜。 有難うございました。 >>606-607 ◆cZfSunOs.Uさん お疲れ様です。私の方でも修復を確認致しました。 ありがとうございました。 T-banana 用の read.cgi本体はex21にしました。 そしてそこから配布という仕組みで とりあえず TODO リスト: ・ hw.model の "Core(TM)2" 判定 http://qb5.2ch.net/test/read.cgi/operate/1172208065/196 # bbs.cgi での banana(?:3\d{3}|290)\. 判定もですね. ・ dat 落ちメッセージ中のソフトウェア板のリンクが古い http://ex20.2ch.net/test/read.cgi/nanmin/1172110596/49 ・ 配布を考えると Makefile 中で RUNPATH 指定した方が安全かも? >>604 >>612 見落としてました......まぁ,結果的には同趣旨が TODO リストに入っているということでご容赦を...... >>614 今は新スレ立てなきゃならないほど人がたくさん来る状況でもないですし,どうしましょうかねぇ...... # 全鯖導入とかすれば再活性化するかもですがw rootさん京ぽん2対応マダー?(・∀・ )っ/凵⌒☆チンチン >>617 http://qb5.2ch.net/test/read.cgi/operate/1171194524/737-759n あたりの話なら,↓のように一義的には Opera への対応によるものです. http://qb5.2ch.net/test/read.cgi/operate/1166328527/373-388n で,携帯等のモバイル端末で 2ch にアクセスする場合は携帯入り口を使ってもらうのが基本で, フルブラウザ搭載だから PC と同じページを閲覧するということなら そのフルブラウザは PC のブラウザと同等の能力を持っていることが前提で, 中途半端な能力のブラウザであれば自己責任ということで対処してほしいと. # このあたりはネスケ 4.x 等のレガシブラウザでも同様で, # レイアウトが崩れるなどしても一応見られるという程度までの配慮はしますが, # モダンブラウザと同等の表示ということまではご勘弁下さいということで. ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる