• 締切済み

アクセス障害でこまってます。

サイトを運用しているのですが、アクセスが集中してしまい、 アクセスができない状態になりました。 アクセス数は"200アクセス/分"でこのような状態になってしまいました。 Apache のエラーログを見る限り、同時リクエスト数がMaxClientsに達したとなっていました。 また、/var/log/message を見ると メモリを使い切ったとエラーがでてきました。 httpd.conf の抜粋 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> この場合、上記設定で変更すべき箇所があれば、教えて下さい。 また、ほかに設定すべきところや、確認すべきところがあれば教えて下さい。 以下のようなログが出力されました。 Apacheのエラーログ [Tue Dec 09 21:21:35 2008] [error] server reached MaxClients setting, consider raising the MaxClients setting /var/log/message Dec 9 21:47:16 www kernel: oom-killer: gfp_mask=0xd0 ... Dec 9 21:53:16 www kernel: Free pages: 16232kB (112kB HighMem) ... Dec 9 21:59:22 www kernel: Free swap: 0kB Dec 9 21:59:22 www kernel: 262064 pages of RAM Dec 9 21:59:22 www kernel: 32688 pages of HIGHMEM Dec 9 21:59:22 www kernel: 3505 reserved pages Dec 9 21:59:22 www kernel: 125465 pages shared Dec 9 21:59:22 www kernel: 481 pages swap cached Dec 9 21:59:22 www kernel: Out of Memory: Killed process 25124 (httpd). サーバースペックが以下になっています。 CPU : Intel(R) Xeon(TM) CPU @ 1.66GHz Memory: 1GB SWAP: 1GB Linux version 2.6.9-78.0.1.ELsmp Apache 2.2.8 (prefork) PHP 5.2.6 何かヒントでもあれば教えて下さい。 お願いします。

みんなの回答

  • spieder
  • ベストアンサー率59% (13/22)
回答No.1

oom-killerが動いているので、Apacheの設定よりPHPのプログラムのバグを疑ったほうがいいと思いますよ。 障害の原因がメモリ不足のようなので、PHPのプログラム側にメモリリークするようなバグがあるか、設計(&実装)に問題があってメモリをバカ食いしているかのどちらかだと思います。 メモリを使い潰している原因が、メモリリークならMaxRequestsPerChildを小さくして早めにプロセスを殺してしまえば対処療法ですが解決はします。

参考URL:
http://itpro.nikkeibp.co.jp/article/COLUMN/20061117/254053/
smz1215
質問者

お礼

spieder様 ご回答本当にありがとうございます。 ApacheとMySQLの設定変更ですこしは軽減しました。 ただ、まだ充分とは言えませんので、ご教授頂いた箇所全般 調べなおしてみます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう