IISでプロセスCPU使用率が高い問題をトラブルシューティングするには、デバッグ診断ツールを使用
IIS のプロセスで高い CPU 使用率を引き起こす問題をトラブルシューティングするためにデバッグ診断ツールを使用する場合は、次の手順に従ってください。
- 確認手順:最初に、プロセスCPU 負荷率が高い問題があるかを明確にします。タスクマネージャーやパフォーマンスモニタからプロセスCPUの負荷率を取得をします。
- 問題の特定:IIS のパフォーマンス モニタリング ツールを使用して問題を特定します。以下の手順でパフォーマンス モニタリング ツールを開始できます。
- IIS マネージャーを開き、監視するアプリケーション プールを表示します。
- アプリケーションプールの設定を右クリックして「詳細設定」を選択する。
- 「アプリケーションプールの詳細設定」ウィンドウにて、「全般」タブ下の「32ビットアプリケーションを有効にする」設定を見つけ、「True」へと設定してください。
- 「アプリケーションプールの詳細設定」ウィンドウを閉じます。
- IISマネージャーにて、もう一度アプリケーションプールの名前を右クリックし、「開始」を選択します。
- パフォーマンス モニター ツールを開き、「カウンターの追加」を選択します。
- 「カウンターの追加」ダイアログで、「ASP.NET」カテゴリを選択し、CPU使用率を監視する適切なカウンターを選びます。
- 解析の結果:性能モニターをしばらく実行して結果を参照してください。CPU 使用率が高いプロセスが見つかった場合は、以下の方法を使用してさらに分析できます。
- プロセス監視ツールを開き、該当のプロセスを探す
- プロセスのうえで右クリックして、「プロパティ」を選択します。
- 「プロパティ」ウィンドウで、「スレッド」タブを選択します。
- スレッドリストの中で、最もCPU使用率が高いスレッドを見つける。
- スレッドを選択して、コールスタック情報を確認します。
- 問題を特定する:コールスタック情報に基づいて、どのコードやメソッドが CPU 使用率の問題を引き起こしたかを判断できます。
- 無限ループや大量のデータ処理など、コードにデッドロックや時間のかかる処理がないかをチェックする
- 解放されていないデータベース接続や閉じられていないファイルハンドルの有無など、リソースリークの有無をチェックします。
- パフォーマンスが低下するデータベースクエリーやその他のIO操作がないか確認します。
- 問題に応じた最適化を実施します。以下の方法について検討してください。
- キャッシュを用いてデータベースクエリを削減する
- インデックスの作成、適切なクエリ方法の使用など、データベースクエリ文を最適化します。
- 重い処理を非同期で行い、メインスレッドへの影響を軽減
- コードを最適化したらアプリケーションを再度実行し、パフォーマンスモニターを使ってCPUの使用料を確認する。CPU使用料が低下していれば最適化がうまくいっている。まだ問題がある場合は、さらにデバッグするか、コードの別の部分の最適化を検討する。
なお、上記の手順は一般的な切り分け方法ですので、状況により異なる場合があります。問題切り分け時には、他のデバッグツールや手法を組み合わせることでより詳細な情報を取得できます。