.NETリソースのトラブルシューティング
この方法で診断しても問題が見つからない場合は、以下のトラブルシューティング手順を使用して問題の根本的な原因を見つけます。
ステップ1 - CPU飽和の有無
CLRのCPUが飽和状態ですか?
- ティアフローマップを表示する。
- Nodesタブをクリックし、Hardwareタブをクリックする。
- CPU %(現在)で並べ替える。
[CPU %] が 90 以上の場合、ステップ 4 の質問の答えは「はい」となります。それ以外の場合は「いいえ」となります。
「はい」の場合 – ステップ 2 に進む。
「いいえ」の場合 ― メトリックブラウザでさまざまなメトリックを確認して問題を特定。
左側のナビゲーションウィンドウで、 をクリックします。次のメトリックを重点的に確認します。
- ASP.NET -> Application Restarts
- ASP.NET -> Request Wait Time
- ASP.NET -> Requests Queued
- CLR -> Locks and Threads -> Current Logical Threads
- CLR -> Locks and Threads -> Current Physical Threads
- IIS -> Number of working processes
- IIS -> Application pools -> <ビジネスアプリケーション名> -> CPU%
- IIS -> Application pools -> <ビジネスアプリケーション名> -> Number of working processes
- IIS -> Application pools -> <ビジネスアプリケーション名> -> Working Set
問題が特定できたので、以下の手順に進む必要はありません。
ステップ2 - 非常に頻繁なガベージコレクションアクティビティの有無
非常に頻繁なガベージコレクションアクティビティがありますか?
「はい」の場合 – ステップ 3 に進む。
「いいえ」の場合 ― 標準ツールを使用してメモリダンプを作成し、それを確認して問題の元を特定。
問題が特定できたので、以下の手順に進む必要はありません。
ステップ3 - メモリリークの有無
メモリリークが発生していますか?
「はい」の場合 ― 標準ツールを使用して、メモリに関する問題のトラブルシューティングを実行。ASP.NET メトリックの確認も有効( をクリック)。
「いいえ」の場合 ― 標準ツールを使用してメモリダンプを作成し、それを確認して問題の元を特定。
回答が「はい」でも「いいえ」でも、問題が特定されます。