この 25% は 1 つのコアに相当しますが、タスク マネージャーのパフォーマンス タブによると、4 つすべてに分散しています。
現実チェック: 1 つのコアを使い果たすと、CPU スケジューラは 2008 R2 より前にコア間で負荷を移動します。2008 R2 を開始すると、1 つのコアに保持され、他のコアが実際にディープ スリープ状態になります。
つまり、基本的には 1 つの CPU コアを使用するアプリケーションです。点。
このような動作の原因は何ですか?
コードまたはリクエスト生成 (コードと一緒に) のいずれかで、リクエストがシリアル化され、並列で処理されないことを確認してください。
負荷テスト中に...セッションCookie(ONEなど)を受け入れ/保持しますか?asp.netページでセッション状態を有効にしていますか?これにより、すべてのページ要求がメモリ内の 1 つのセッションにシリアル化され、非常に可能性の高い原因の 1 つになります。もう1つは、コードで「ばかげた」ことを行い、その結果がブロックになり、アルゴリズムを効果的にシングルスレッド化することです。しかし、これは、プログラミング方法と効果的な実行方法に関する多くの情報がなければ評価できません。たとえば、アプリケーション オブジェクトに保持された 1 つのデータベース接続 (データベースを過負荷にしないため) を使用してオンライン ショップをコーディングし、そこでロック/ロック解除メソッドを使用して ASP アプリケーションをシングル スレッドに効果的に変換する多くのサルを見てきました。もの。これは明らかでしたが、うまくいかないことが他にもたくさんあります。
- 構成/テスト シナリオによって、IIS を強制的にシリアル化することを行っていますか (これは、Web ファーミング設定またはセッション状態の不適切な使用の中にあります)。
- ページをシングル スレッドに効果的にロックするようなことをページ内で行っていますか?
IIS 自体は、作業項目を介して要求に応答します (つまり、大量のスレッドを使用します)。ただし、HA をシリアライズする場合を除きます (セッションは一度に 1 つのスレッドにのみ割り当てられるため、同じセッションに対する 2 番目の要求がシリアライズされます)。