read.cgi再開発スレ
■ このスレッドは過去ログ倉庫に格納されています
稼働させると問題が多発しているread.cgiを再開発等を話しあうスレッド
です。
アイデア等がありましたらこちらへどうぞ ★現状の問題点
・tiger鯖ではread.cgiを稼働させると高負荷になる。
・peko鯖の場合は負荷に関係なく落ちる確率が上がる。
★解決策
・tiger鯖用の低負荷なread.cgiの再開発
・peko鯖用のAMD64特化版read.cgiの再開発 関連発言
http://qb5.2ch.net/test/read.cgi/operate/1087192862/22
22 名前: ◆Reffi/bQ.c [sage] 投稿日:04/06/14(月) 16:02 ID:pmCliEFX
>21
peko鯖はだいぶ安定運用し始めているのであとはread.cgiの低負荷化さえ
出来ればいいんじゃないかと思ったり
read.cgiの低負荷版の開発は次の世代の若者に全て任せるという事で(ぉ
http://qb5.2ch.net/test/read.cgi/operate/1087192862/26
26 名前: ◆BDFCNV1.to [sage] 投稿日:04/06/14(月) 16:05 ID:MdNpKY8r
>>22
私が見るに、
read.cgi をpeko で動かしていると良く落ちるということは
負荷が問題じゃなく、相性の問題と、
つまり read.cgi にpeko だと顕在化する bug があるのか、
そんなとこだと思う。
read.cgi の書き直しは、そっすね次代の方々に譲るということで、 >4
サンクスです。
そういえば、今read.cgiのソースは公開しても問題はないんでしょうか? >7
ありゃ
banana鯖でした(汗
というわけでwiki修正もよろしくお願いします。 >9
人大杉スレ見たらbananaで止まっているのはbanana227だけであとはpeko鯖
ばっかりですね。 とりあえずは無駄な機能をバッサリ切っちゃうだけでも違うと思うな。>read.cgi >>11
わかいのぉ
もっとドラスティックな変化が必要かと、
三回目は時間&お金&いろいろかけたところで
売るものは大したこと無いよ 個人的にはmmap()まわりが頻繁に呼ばれるところあたりかなぁと思っていたり。 で、今のread.cgiではmmap()を使うか使わないかはは#defineで簡単に制御できるので、
そのうちmmap()を使わない版を入れてみようかなとは思っていたり。 あ、面白そうなのが始まった。
こういうの興味あったんでコツコツ勉強してたんだよな。
Perlを。 >>18
残念だな、若いの
read.cgiはCで書かれているから君の専門外だ C言語なら毎日使ってるから少しは役に立てるかな?
組み込みの仕事だから標準関数なんて全然使ってないけど。 おっ、おもしろそう、
RDT板を残しとけばよかった 実験室復活させよう実験室。(何
kusoしすてむの実験もかねちゃえ。(ゅ Cは大学時代の講義で基本的なこと覚えただけなんだよなぁ、、
でもCは覚えて絶対に損はしないから、なんとかついて行こう
と、思うだけ思ってみる。 よし!俺も暇になったら>25さんの後をついていこう!
俺だってCの基礎の基礎くらいは覚えてるし
この機会に勉強するぞ!
とか意気込んでみるテスト(。A 。 ) Cのディープな世界へご案内〜。
64bit環境のプログラミングは未知の領域なので、ちょっと面白そう。
某大学の情報工学科の首席なんで暇があったらお手伝いします 新しいread.cgiも、呼ばれる度にdatを見に行って、シコシコHTMLに変換するタイプにするの? C++やろうかな……いいかげんPHPオンリーを脱出せねば笑 ひまだから、64bit版read.cgiつーのつくってみるわ
pekoネイティブな、ちょっとまちなー 現行のread.cgiがどのような動作をしているのか、どこかで解説されてないかな?
現在の動作が分からないと、設計もできないんでないかい? >>33
改造コピペネタでつか?
>>8
なおしときますた。 >>30
dat読み込みから見直すんならbbs.cgiの方まで見直さなきゃいけないと思うんだけど
そこまで大改造はしないと思う。
banana鯖用のスリム化は別にやらなくても大丈夫らしい(>>9-10)だから
やることはAMD64特化版read.cgiってやつだけかな? >>34
Perlで似せてread.cgi作った時は大体こんな感じの処理が必要だったけど。
各種設定
背景色等の設定用にSETTING>TXT読込
クッキーの読込
エラー判定
datファイル読込・存在するかの判定
無い場合は過去ログ倉庫に存在するかの判定
ヘッダ部出力
datファイルのレス数を取得
レス番の指定がある場合は出力範囲を算出
ヘッダ部の100レス単位リンクの出力範囲を算出
レス部出力
>1を表示するかの判定
レスの[ここ壊れてます]判定
メール欄がある場合の名前欄リンク化
URL文字列のリンク化
外部サイトのime.nuリンク補正
レスアンカの補正
長文省略判定
フッタ部出力
datファイルのサイズを取得
新着レスの表示/続きを読む 判定
前100、後100 表示判定
フォーム編集
timeパラメータ用に時刻取得 >37
解説ありがとん。なるほど、結構単純なようでややこしそうな処理だねぇ。 >>36
#ifdef amd64
なんちゃら
#endif
#ifdef ia32
どんちゃら
#endif
とでもできませんかね。コンパイルがmakeを使用するようになっていればの話ですが。 2ちゃんねるはガリガリに最適化されたmod_2chで動いてると思い込んでいただけに
ショックだ >>40
apache moduleの話は出てきては立ち消えになっているんですがねぇ。
どうなることやら。 mod_isp2ch なんてのはあるみたいですけどねぇ。
ひとまず、AMD64 でも安定して動く read.cgi でしょうか。
それ以上のことは、掲示板システム全体の再構築が必要かと思いますので。 #include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
printf(
"Content-Type: text/html; charset=Shift_JIS\n\n"
"<html><head><title>もうずっと人大杉</title></head>"
"<body><h1>もうずっと人大杉</h1></body></html>\n"
);
return EXIT_SUCCESS;
} 昔、UNIX板の有志が書いてたread.cgiのソースって、今も公開されてるんだっけ? 古かったと思う、>45-46
最新のは未公開、多分、 とりあえずborlandのコンパイラを落として、暇を見つけつつ
基本構造のおさらいから始めてて、ふと思った。
これ、それなりの形が作れるようになった頃には
とっくに開発終了してるんじゃなかろうか。。
頑張れ、俺。 >>16 で言及した、
mmap()を使用しないread.cgiをgame6サーバに実験的に入れてみた。
これでしばらく実験してみるということで。 32-bit 環境と 64-bit 環境での違いっていっても,変数サイズの違いぐらいで,
そんなに変わるわけでもないけど.って,それがこける原因じゃないよな......?
long とかポインタのサイズに依存するような処理って入ってたかな......? 20日以上動いていたgame6が、read.cgiを上げたら半日で死にました。
mmap()ではなかったと。
ということで、
live8(read.cgiを動かしている)とcomic4(携帯の負荷に耐えている)で実績のある、
以下の設定を追加してみた。
(従来)
<IfModule prefork.c>
StartServers 64
MinSpareServers 5
MaxSpareServers 32
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 0
</IfModule>
(現在)
<IfModule prefork.c>
StartServers 64
MinSpareServers 5
MaxSpareServers 32
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 100000 <= 変更
MaxMemFree 2048 <= 追加
</IfModule> Re: huge memory leak in 2.0.x
http://www.mail-archive.com/dev@httpd.apache.org/msg21175.html
ということで,2.0.x には CGI を呼んだ際にメモリリークする問題があるそうで,
とりあえずは MaxRequestsPerChild / MaxMemFree での対処は
妥当なところなんでしょうけど,AMD64 以外ではこけるというところまでは
行ってなかったんですよね......? >>53
どうもです。CGIを呼ぶとメモリリークするのですか。
かつてのumaサーバ(Xeon 2.4G dual/メモリ2G/FreeBSD 4.x)では特に問題なかったですね。
FreeBSD 4.xと5.xの違いか、amd64とi386の違いか。 ということで、read.cgiの現在のソースを
出来る範囲でもうすこしまじめにあたってみるか。 …ということで、いったん退却。
【Project peko】2ch特化型サーバ構築作戦 Part13
http://qb5.2ch.net/test/read.cgi/operate/1085678587/963
963 名前:root ★[sage] 投稿日:04/06/18 11:54 ID:???
ということで、リモートからデバッガに落とせない状態なので、
いったんgame6のread.cgiを止めます。 既出?
ttp://qb5.2ch.net/test/read.cgi/operate/1081010089/631 >>57
hardをどうにかする、というのは基本的にあきらめたみたいだよ。
(これから新規に買うときは発注条件をなんとかする等で気をつけて欲しいけどね)
OSもどうなんだろう?live8は今の所問題ないし。。。
今は、opteron・apache・OS等の禁忌事項にread.cgiの処理が当てはまってるかどうかとか
そういうのを調べてみる時期なんじゃないのかなぁ??
(ソフトのことはよくわかりませんが) >>58
ていうか、現状何が問題なんでしょ。
read.cgiに限らず。 >>59
わかる人が見ないことにはそのへんすらわからないだろうね。
ちなみに漏れは見てもわからんのは確実。がはは。 オープンソースで改良作業が行われていた当時の read.cgi ソースはこちら.
http://gedoh.org/aki/2ch/current/bbs/
どこかで地雷を踏んでるのかねぇ...... 今まで「これをやると落ちる or 落ちる確率が間違いなくアップする」ものとしては、
・read.cgi
・fox.cgi
かなと。 つーか、言語なんすか?perl?
Cなら協力できそうにないなぁ。。 >61
うがー。malloc/free/memmset/memcpy/memcmp/memchrが。 もうずっと人大杉 へ飛ばされる板のスレを見たいのですけど、
.datファイルのレスX番から50個のレスを読み込むにはどうしたらいいのでしょうか?
全部読み込まないと駄目なのですか?
なーんで負荷が高いsports8とかで問題無く動いているread.cgiが
game6になった途端くたばるん?
最新型マザーボードが狂ってるんか? ■ このスレッドは過去ログ倉庫に格納されています