プロセスが500を越えた辺りから、
CGIで「 500 Internal Server Error 」が出るようになります(3回に一度くらいの頻度)。
300プロセスくらいで続くと問題なく動作しています。
再起動すると一時的に快適になりますが、
rebootした直後に以下のようなエラーが
たくさんでます(50個とか)。
Apr 1 18:14:59 www kernel: Connection attempt to TCP 192.168.1.19:80 from ***.***.***.***:***** flags:0x02
※ ***は、実際は数字です。
考えられる原因は何でしょうか?
以下、top の情報
last pid: 54042; load averages: 0.74, 0.65, 0.79 up 0+01:50:53 20:05:17
558 processes: 3 running, 501 sleeping
CPU states: 4.5% user, 0.0% nice, 6.7% system, 3.0% interrupt, 85.8% idle
Mem: 127M Active, 129M Inact, 141M Wired, 112M Buf, 2108M Free
Swap: 6144M Total, 6144M Free
難しいことは、よくわからないので、初心者用にお答えいただけると助かります。
kernel ログに関しては roboot 時に中断されたコネクションのものだろうから関係なさげ。
top の情報からはプロセス数の割りに running の数と CPU 使用率が低い事から ディスク IO あたりがボトルネックで処理が追いついていないじゃないですか?
Perl のプロセスがいくつかも分からないので、それ以上はなんとも。
http://homepage3.nifty.com/hippo2000/perltips/CGI/SpeedyCGI.htm
CPU使用率がやけに低いのが不可解ですが、Perlインタプリタが正常に再利用されていないようです。
状況(イントラネット(LAN)かインターネットか、アクセス頻度はどの程度かなど)がわからないとどうともいえません。
> Apr 1 18:14:59 www kernel: Connection attempt to TCP 192.168.1.19:80 from ***.***.***.***:***** flags:0x02
これはおそらく失敗した通信のログだと思います。
CGI高速化の方法はいくつかあり、それぞれうまくいかないケースがあるようなので、別の方法(mod_perlやFastCGI)も試してみてください。
ありがとうございます。
>558 processes: 3 running, 501 sleeping
ほとんどのプロセスは待機状態
>CPU states: 4.5% user, 0.0% nice, 6.7%
>system, 3.0% interrupt, 85.8% idle
CPUはほとんど使われていなく、かつ
OS/割り込み処理もない
>Mem: 127M Active, 129M Inact, 141M Wired,
>112M Buf, 2108M Free
RAMは十分空がある
>Swap: 6144M Total, 6144M Free
仮想記憶も空いている
>300プロセスくらいで続くと問題なく動作しています
プログラムにバグがなく正常に終了しているので
あれば APACHEの接続可能なセッション数の上限
に達しているのでエラーになっているかもしれません。
取りあえずふやしてみては?
(MaxClientを増やす)
apache周りを見直して見ます。
ふむふむ。。ありがとうございます。