CentOS でスリープ状態のプロセスが多すぎる - どのように診断すればよいですか?

CentOS でスリープ状態のプロセスが多すぎる - どのように診断すればよいですか?

スリープ状態のプロセスが多数あり、その数は約 600 です。その大部分は Apache プロセスです。

これらのスリープ中のプロセスをすべて終了する必要がありますか、それとも Apache は完全に失敗してしまいますか?

そもそもこれらのプロセスはなぜスリープ状態になっているのでしょうか?

サーバーは CentOS 6 と Apache 2.2 を実行しています。

答え1

システムのスリープ中のプロセスをすべて終了しても、抱えている問題は解決せず、何の問題も解決しません。


アプローチを体系的かつ系統的に行う方が、無茶な行動をとるよりもはるかに効果的です。

個人的には科学的方法(他の人はそれを何か違います) 問題を診断するときにシステム管理キットから取り出す素晴らしいツールです。

  1. あなたが解決しようとしている実際の問題は何ですか?

サービスが応答を停止します。1

  1. さて、私たちが解決しようとしている実際の問題が何であるかがわかったので、方向性が見えてきました。解決策を見つけるのに役立つ情報を収集してみましょう。

    • 問題は時間に関連していますか? 定期的に発生しますか、それともランダムに発生しますか。
    • ログを確認してください。特定のサービスのログだけでなく、他の何かが問題の原因になっている可能性もあります。ログ エントリには通常、タイムスタンプがあります。これは、複数のアプリケーションやサービス間でイベントを関連付けるのに役立ちます。これを使用してください。必要に応じて、ログの詳細度も上げてください。
    • システムが何をしているか観察してください。top、vmstat、iostat、sar、ps、tcpdumpなどのツールや本格的なツールを使ってください。監視システム

  2. 収集した情報を分析します。サービスが応答を停止すると、システムでは実際に何が起こっているのでしょうか? システムのリソースの状態はどうなっているのでしょうか?

  3. 適切な処置を行って修復してください。メモリ不足で OOM キラーが発生し、スワップ アクティビティが高すぎ、実行キューが長すぎ、IO 制限などが発生しているなど、何が起こっているかが明らかであれば幸いです。明らかでない場合は、おそらく正しいデータを収集していないため、何をすべきかがわかっているので、2 に戻ってください。

  4. 4. で導入された変更が何をもたらすかを監視します。

  5. 変更によって問題は解決しましたか? 改善されましたか? 悪化しましたか? 違いはありませんか? ここから先は、発見した内容によって異なります。2. に戻ってより適切なデータを収集するか、3. で保有しているデータを再分析するか、4. で潜在的な解決策をいくつか特定したかのいずれかを行う必要があるかもしれません。

  6. 発見した内容と行った変更を文書化します。

  7. ベッドに戻る/仕事から家に帰る/パブに行く。

1これは何でも構いませんが、「サーバーが遅い」、「サーバーがメモリを使いすぎている」などです...

関連情報