mod_evasive入れたんで、ちょっとはDOS攻撃に強くなるかと思ったのだけど、それでも時々サーバが動かなくなる。OS自体は動いてるのだけど、swapを使い尽くして何もできなくなる。swap_pagerのエラーログが出続け、logrotateしてると、肝心のエラーが出始める直前の状態のログが流れ去っていたりする。原因究明のために、パソコンから端末を開いてtopコマンドを動かしっぱなしにしてみた。これだと、swapを使い尽くすと通信も激重になるので、端末画面にトラブルの状態がそのまま残る。
 その結果、原因はhttpdで、httpdの数はそれほどでもないが使用メモリが跳ね上がってるケースと、httpd1つの使用メモリはそれほどでもないが一度に大量に動いてメモリを食い尽くすケースの2通りが起きることがわかった。
 apacheからはプロセスの管理がデフォルトでeventになっているので、これを、PHPを使う場合のお薦めとされているpreforkに変更。
./configure –prefix=/usr/local/apache2 –enable-so –enable-mods-shared=all –enable-rewrite=shared –with-mpm=prefork
とやってから make install。
http -V
で、mpmがpreforkであることを確認。

 設定は、httpd.confで、extra/main.confとextra/mpm.confを見に行くようにしておいて、main.confでKeepAliveをOffにする。mpm.confは、
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 12
MaxConnectionsPerChild 100
という、数を増やさず、接続回数100回で一度メモリを解放させるということにして様子を見ることにした。お行儀の悪いPHPが紛れ込んでもこの程度なら何とかなるかな。

 やってみた結果、まず、httpdのプロセスのSIZEが平均350Mくらいだったのが165M〜180Mに減り、WordPressの画像の多いページにアクセスしてもプロセスの数が無闇に増えることもなくなった。その分、アクセスが集中すると重くなるだろうとは思うが、最初だけ多少早くてもswapに落ち始めたらどのみち激重になって復活させるには強制リブートしかないので、それなら少しタイミングを外せばまた軽くなる方がましだろう。



Recently:


Comments


Name

Email

サイト

XHTML: 次のタグが使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

コメント

*