apacheのエラーログのエラーを一個ずつ取り除く 1回目

今日はapacheの話をします。

vhostの設定とかでwwwサーバのサービスを再起動することがあって、このメッセージにはかなり参った。

Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs

で、無理やりhttpdのプロセスをkillしてサービスを起動させるんだけど、これに遭遇したのが今回で2回目になる。

これはやばいかもしれない、と思って原因を調査中なんだけど、とりあえずapacheのエラーログのエラーをひとつずつ解決してみようということを考えた。

で、今回から初めてなんだけど、下のエラーメッセージを解決してみようと思います。(ちなみにエラーログには今もエラーメッセージが吐き出されています。。。)

「server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 8 children, there are 2 idle, and 21 total children」

このメッセージは、英文のとおり、サーバの負荷が大きいので、何とかしろということらしい。

んで、httpd.confの下記の設定が私が管理しているwwwサーバの値だ。いじった覚えがないんでデフォルトだな。。。

StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000

これは、ベンチマークを実行して様子を見ながら色々設定をいじらないとあかんようで、時間がかかりそう。

なので、ひとまず、httpd.confのKeep Aliveの設定を見直した。

Keep Alive On(前はOffだった)

MaxKeepAliveRequests 100

KeepAliveTimeout 15

これで一日様子をみたが、上記のエラーは出ていなかった。

クライアントからも特別連絡はなかったので、サーバは問題なく動作しているだろう。

不具合が出たら出たときにまた対応したいと思います。

というわけでひとまずOK.

MaxKeepAliveRequests 100

著者:bouya Imamura