CPU 100% となりハングアップ

システムから応答が無い場合、シーンと黙り込む場合もあれば、CPU の占有率が 100% となりシステム全体が重くなって、 応答が返らない場合があります。こんなときは、次の手順で調査を開始することで問題を切り分けることが可能です。

  1. パフォーマンスログの採取を設定する
    このとき、プロセスパフォーマンスオブジェクト、スレッドパフォーマンスオブジェクトのインスタンスを全て採取とする。
  2. 問題を再現させる
  3. CPU を占有しているプロセスのダンプを数回採取する

パフォーマンスログを確認することによって、どのプロセス内の何番のスレッドが CPU を占有しているのかわかります。 また、ダンプからそのスレッドでどんな処理をしていたのかわかります。

ちなみにログを確認するときは、パフォーマンスログはスレッド ID ではなく、 スレッドのインデックス (通し番号) を表示することに気をつけてください。 つまり、スレッドは生成消滅しますから、同じスレッドを指していてもインデックスは変る可能性があります。 例えばスレッド ID が 100 のスレッドのインデックスがある時点で5番でも、次の瞬間には6番や4番などに 変っている可能性があるのです。ですから、インデックスをもとにスレッドを参照するときは、念のため その前後のスレッドも確認すると良いでしょう。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説