今年に入ってからでしょうか?サーバーの負荷が急激に上がり、強制再起動を何度もする必要がありましてそんなのが続いております。様子やログを見ていると大陸系の検索エンジンもしくは巡回クローラー的な何かが一気に来ているっぽい為、アクセス制限かけたり、その他いろいろ工夫して対応をしてきましたが、アクセス元が多岐にわたり、制限も追いつかない状態です。というかホスト名で出来ていない奴あるよな・・・・
で、シェルで見ていると不具合起きる時はhttpdが凄い数立ち上がってメモリが不足し、そのままサーバーのコントロールができなくなり、強制再起動な流れになっておりまして。
それなら様子を見ながらhttpdのプロセス数に制限かければいいか、と現在様子見中。
httpd.confの
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
このあたりを段階を経て下記に変更。というかデフォルトだとほぼ制限なしな感じなのか・・・512MBしかなく、サイトもそんな入ってない状態でその以上アクセスがなければこれでも問題ないのですが・・・・
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 64
MaxClients 64
MaxRequestsPerChild 2000
ただこれでも駄目だったので更に
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 32
MaxClients 32
MaxRequestsPerChild 2000
に変更。そしたらアクセス過剰状態でもメモリ不足にはならずhttpdの数も32程度、シェルでサービス再起動で対応出来ました。あとは監視で動いてるcronの奴がある程度時間経つと勝手にhttpdを再起動するようになっているのでそれでもなんとかなりそうです。
とはいえ、過剰アクセス中だとメール送受信やsshでのログインは出来てもWebにはアクセスできなくなるわけで根本解決ではなく・・・・基本性能をアップさせて、更に設定で微調整するのが良いので今後はそういう提案していきましょうか・・・・
最後には
ServerLimit 28
MaxClients 28
MaxRequestsPerChild 1000
にしました。またこれで様子を見ます。
----------------2017/06/20追記---------------
MSN系Bingも要因の一部かもしれませんがこれより
badfec2b.virtua.com
hn.kd.ny.adsl
からのアクセスが本命っぽい事がわかりました。なので一時はMSN系からのアクセスを拒否していましたが本日、アクセス拒否設定を解除しました。
あとこの設定、効果覿面。httpdがメモリを使い切らない為、Webサーバーが不安定になってもシェルでログインしてサービス再起動とか出来るし、サービス監視ツールが自動で再起動する事も出来るようになりました。前はメモリリークというか使いすぎでシェルでログインできないわ自動再起動スクリプトも動かないわだったので全然違いますわ・・・・
----------------追記ここまで---------------
----------------2019/03/13追記---------------
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 64
MaxClients 64
MaxRequestsPerChild 1000
に変更しました。接続数設定が少なすぎたようなので。
----------------追記ここまで---------------