過去24時間に、フリーズのために4回ハードリブートされた運用サーバーがあります。 pingは問題ありませんが、他のすべてのサービス(Apache、SSHdなど)がタイムアウトします。 Apacheを起動してから数秒以内に突然フォークする大量の子プロセスが原因で、メモリが不足していることをApacheと診断しました。再起動直後にApacheを停止すると、サーバーが再び安定します。
私の2つの質問は次のとおりです。
各仮想ホストのアクセスログを1つずつ調べずに、どの仮想ホストが突然ハンマーで打たれたかを検出する方法はありますか?
Httpd.confでvhostをすべてコメント(#)せずにすばやく有効/無効にする方法はありますか?
いくつかのシステムの詳細:
Fedora 10、x86_64、PHP 5、Apache 2.2
mod_status を使用してステータスページを設定してみてください。サーバーの起動後にアクセスできる場合は、ページが表示されます このように 対応する仮想ホストとの各接続とURLが表示されます。
サイトがひどく氾濫してアクセスできない場合は、netstat -nt | grep :80
またはlsof -ni tcp:80
を実行して、1つまたは2つのアドレスが氾濫しているかどうかを確認し、それに応じてiptablesを適用してください。
1)私はよくlsofを使用して、高負荷時にApacheが開いているファイル/ディレクトリを確認します。したがって、たとえば(debian/ubuntuで)実行できます:
lsof -u www-data
次に、より便利なものを取得するには、正しい場所(/ homeなど)で開いているファイルのみを検索し、常に開いている必要があるログファイルを除外します。
lsof -u www-data | grep /home | grep -v *.log
何が頻繁に実行されているかを把握するために、これを数回実行する必要がある場合があります。
2)実行中のdebian/ubuntuの場合、a2ensiteおよびa2dissiteを使用して、Apacheセットアップからvhostを自動的に追加および削除できます。