![CPU 使用率が 50% ですが、IIS/ASP.net リクエストはまだキューに入れられています](https://rvso.com/image/652663/CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E3%81%8C%2050%25%20%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81IIS%2FASP.net%20%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%AF%E3%81%BE%E3%81%A0%E3%82%AD%E3%83%A5%E3%83%BC%E3%81%AB%E5%85%A5%E3%82%8C%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99.png)
当社には (VMWare) VM があり、負荷テストを行うと、120 ユーザーでリクエストのキューイングが開始されるようです。
CPU 使用率が 70% を超えていないようなので、リクエストの処理に失敗する理由がわかりません。
CPU時間は左下に赤で表示されます
答え1
CPU は、リクエストを処理するための唯一のボトルネックではありません。すべては、アプリケーションが何を実行しているかによって決まります。IO バウンドの作業を多く実行している場合は、CPU よりもそれが大きな要因になる可能性があります。
ASP.net の ThreadPool には限られた数のスレッドがあるため、すべてのスレッドがビジー状態になるとキューに入れられます。この作品リクエストのキューイングに関するヒント。
リクエストごとに大量の SQL 挿入/更新を行っていますか? Glimpse を使用して、それらのタイミングを取得してください。 それらの数が多すぎると、応答を待つスレッド/リクエストが停止します。
サードパーティの API を呼び出していますか? それらはスレッド/リクエストを待機させ、許可される同時接続の数に制限があります。
アプリケーションは各ユーザーに対して何を実行しますか? 1000 件以上のレコードを取得していますか?
これをチェックしてMS Connect サポート記事まだ調整していない場合は、役立つ可能性のある IIS 構成オプションが多数あります。
繰り返しますが、これはアプリケーションが何をどのように実行するかを知らなくても実行できます。