VSを使用した負荷テストは初めてですが、すべて正常に設定されていると思います。負荷テストの実行がすぐに100%のCPU使用率に急上昇するという問題があります。これは私のテスト結果に影響を与える可能性があり、予想される動作ではないと思います。
私のハードウェアプラットフォームは強力な開発者マシンです。数か月前にクアッドコア、12 GB RAM、2台のIDEドライブ、高速NICを搭載しています。必要に応じて詳しく説明することもできますが、通常は悲鳴を上げると思います。
VS2010 SP1、C#/。NET 4を使用して、MSSQL2008に対してWin7x64でローカルに実行されるMVC2/3アプリケーションをテストしています。
基礎となるテストは、Unityおよびその他のEnt-Libライブラリを使用して、ユーザーの権限に従ってデータベースからクライアントのコレクションをプルバックする単一のMVCコントローラーメソッドを実行する単体テストです。ユニットテストの通常の実行時間は0.4〜0.6秒です。
負荷テストは、パフォーマンスの問題を明らかにするように設定されており、10分間実行されます。
- 初期ユーザー数:1
- ステップ期間:30
- ステップユーザー数:1
観察:
シングルユーザーとしての最初の30秒間は、実行が少し不安定になります。最初のテストには3秒かかりますが、これは通常のウォームアップです。次の15秒ほどは約0.4秒かかります。これは完璧です。ただし、10秒後、テストは5秒間実行を開始します。これは、2番目の仮想ユーザーが登場する前です。追加の仮想ユーザーが登場すると、テスト時間は徐々に増加します。これは予想されることですが、ランタイムはまだ長いように見えます。
さらに懸念されるのは、CPU使用率がユーザー6付近で急上昇することです(8コアすべてで平均して約20%前)。ユーザー6と7では、CPUは70%になり、ユーザー8によって8コアに100%で固定され、10分後にテストが終了するまでそこに留まります。言うまでもなく、通常の段階的テストでは、10人の同時ユーザーから始めて100人以上に増やしたいのですが、CPUが100%で始まり、結果は確かに不正確です。
実行中のタスクからわかるように、赤銅鉱は明らかにQTAGENT.EXEです。それは私が見ることができるものからすべての予備のCPUサイクルを使用します。この負荷テストも32ビットモードで実行しましたが、QTAGENT32.EXEも同様に実行されます。
どうしてこの問題が発生するのか、ましてやどうしたらいいのか、途方に暮れています。任意の提案や解決策をいただければ幸いです。TIA!
編集
問題の回避策は、[テストの実行]ではなく[デバッグテスト]をクリックして負荷テストを開始することです。これは私にはまったく意味がありません。実際、私が期待するものとは正反対のようです。ただし、数百人のユーザーで一貫してテストを実行し、CPUをセミスラッシングしているだけであることを否定することはできません(スパイクで平均約50%)。