read.cgi再開発スレ
■ このスレッドは過去ログ倉庫に格納されています
稼働させると問題が多発している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になった途端くたばるん?
最新型マザーボードが狂ってるんか? 公開版ソースでは MAP_PRIVATE で mmap() してるみたいですが......
見たところ,マッピングされた領域に書き込みを行っていないようなので,
MAP_SHARED でいいのではないかと.mmap() 本来の仕様では
マッピングされた領域に書き込みを行わない限り MAP_SHARED も
MAP_PRIVATE も同じ挙動を示すはずですが,このあたりに地雷があるとすると
どうなるかわからないので.ちなみに,Apache(APR) では MAP_SHARED
で mmap() が実行されます.
>>69 ふむ,予想に反して mmap() が意外に遅いと......で,mmap() に
改善の余地があるのかないのか......という話のようですね.
とはいえ,カーネル時間の消費は mmap() の方が圧倒的に少ないので,
単一のプロセスをぶん回すような用途ならともかく,多数のプロセスを
同時実行するような用途ならその状況でも mmap() に利があるかとは思いますが. スレ立て時に強制sageを指定できるようにきぼんぬ。
そうしてread.cgi ver8.00はこれで決まり。 自分で書いてこんなのどうですかって持ってこないと話にならんでしょ 大体それreadじゃなくってbbsの方の範疇だし。 ちょっとCをかじってたので協力できたら…
なんて考えていましたがはっきりいってわかんね〜(笑
mmap()って何なんでしょうか?
mallocとかまでしか着いていけませんでした
http://www.ebimemo.net/diary/?date=200303
mmap()の意味も見つけられない人は、「ちょっとCをかじってた」とは言わない
ttp://www.google.com/search?lr=lang_ja&ie=Shift_JIS&oe=Shift_JIS&q=mmap ていうかこの期に及んで
「必要なのはC言語の知識というよりは高負荷環境を捌く知恵と経験」
ということに気づけなかった時点でイラネ 前live5鯖でやってた
h ttp://鯖.2ch.net/板/read/dat.html
例)http://live5.2ch.net/livetbs/read/1074855449.html
あれはどうなった? >>78
C版の開発はチューン次第ではメモリ不足の解消にもつながるでしょう
一般的に
size(perllccバイナリ)>>size(Cコードバイナリ)
だし ちょいとネタ振り.
mod_cgidso http://jbbs.livedoor.com/bbs/read.cgi/computer/2095/1051177958/129
外部 CGI を実行ファイルではなく共有オブジェクトで作成し,fork(),exec() の
オーバヘッドを解消するもの.CGI そのものをモジュール化すると,
プログラム変更のたびにモジュール入れ替えのため Apache を再起動しなければ
ならないが,これなら単に外部 CGI の共有オブジェクトの入れ替えだけで済む.
で,以前ソースをうpしていた鯖は現在亡くなってしまっていますが,
mod_cgidso.c (モジュールソース)
dso-example.c (これを利用した共有オブジェクト型 CGI のサンプル)
read.tar.bz2 (>>61 のソースを基にこのモジュールに対応させたもの)
どこか適当な場所があればうpします...... >>82
お、そっか、これ、改めていいかも。
どこかにうpしてほしいなと。 >>83 とりあえず臨時自宅鯖でうpしますた.
http://203.205.158.203/jikken/mod_cgidso.c (モジュールソース)
http://203.205.158.203/jikken/dso-example.c (これを利用した共有オブジェクト型 CGI のサンプル)
http://203.205.158.203/jikken/read.tar.bz2 (>>61 のソースを基にこのモジュールに対応させたもの)
DHCP の上 Dynamic DNS 使うほど本格運用するつもりもないんで,
IP 変わったりした際はご容赦を...... >>84
ping とおらなくて、port 80も応答しないっす。 【Project peko】スレの方は OS の話が進んでいるようなので,こちらで.
http://qb5.2ch.net/test/read.cgi/operate/1087666806/914n
>で、どうも、プロセスが多く起動・終了されるマシンで、落ちる可能性が上がるように見える。
ということなら,mod_cgidso で何とかなるのかな,という気もしますが...... aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa html化されているログをread.cgiで読めることは
もともと保証されていないのだから「仕様」でしょう read.cgi ver7.31p (04/10/29) >>94
live8 (AMD64)のread.cgiを7.31pに更新しました。
これから memories 上の各バーチャルホストのも更新します。 ■掲示板に戻る■ 関連ページ 全部 1- 最新50 [PR] 新潟ガンバレ. [PR] sports2
read.cgi ver6.01p (02/04/12)
(つД`) 右上の広告が激しくウザイです
終わったら早く消してください糞野郎(^^v live8 と memories の read.cgi を変えました。 というわけでこうなるとeq/eq2のピーク時の負荷がちと心配なんで、
やばければまたごそごそしてみるか。 >109
×糞運営側が
○糞管理人が
他の人はタッチできませーん。 地震Wiki(eq2.maido3.com)は、何とかもちそうかな。
チューニングがよく効いている模様。
banana618% uptime
6:41AM up 3 days, 1:23, 1 user, load averages: 8.06, 12.48, 11.03 ■ このスレッドは過去ログ倉庫に格納されています