1

サーバー (Windows Server 2008 x64 上の IIS7、プロセッサ Xeon Quad) で ASP.Net アプリケーションの奇妙な動作に直面しました。

Web アプリケーションは、約 1 秒で何らかの計算を行い、結果を表示する単純なページです。つまり、ネットワーク、ディスク、メモリをほとんど消費せず、プロセッサ リソースを完全に使用します。

負荷テストで次の現象が発生します。IIS7 はプロセッサを 25% しか使用しておらず、それ以上の使用を望んでいません。この 25% は 1 つのコアに相当しますが、タスク マネージャーのパフォーマンス タブによると、4 つすべてに分散しています。もう一方のコンピューター (IIS7、Win 7、Quad) では、すべて正常に動作します。プロセッサはすべて 100% 使用されています。

それぞれの動作バリアント (4 コア プロセッサで 25% および 100% のピーク負荷) について、2 台のコンピューターで見つけました。同様の状況がここで説明されています。このような動作の原因は何ですか?

4

5 に答える 5

2

この 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 番目の要求がシリアライズされます)。

于 2010-11-08T11:04:54.117 に答える
0

新しいOSをインストールすると、問題は解決しました。「WindowsServer2008Standard SP2(c)2007 」ではなく、「 Windows Server 2008 Enterprise SP1(c)2009」。

于 2011-04-15T08:07:25.010 に答える
0

サーバーが複数のワーカープロセスを使用していて、負荷テストソフトウェアが並列にリクエストを発行していることが確実な場合は、アプリケーション内の何かがシリアルになっている可能性があります。

これは実際にはかなり一般的です(お客様のために多くの負荷テストを行います)-サイズが1のデータベースプールのように単純な場合もあれば、アプリケーション内またはアプリケーション内のあるレベルでロックされている共有リソースのように複雑な場合もありますアプリケーションが使用しているライブラリ。アプリケーションページを提供する最初のステップで、ページが完了するまでコミットされないトランザクションが開かれる場合があります。そのトランザクションが、他のすべてのページで同じ目的に必要なテーブルをロックしている場合、一度に処理できるページ要求は1つだけです。

問題を探して頑張ってください-あなたが見つけたものを私たちに知らせてください!

于 2010-11-10T13:34:17.060 に答える
0

読み込みが 100% だった 2 台のコンピューターには、32 ビット Windows がインストールされていることがわかりました。同じ 2 台のコンピューターで、ピーク負荷が 25% - 64 ビットでした。しかし、カスタマイズの変更 "32 ビット アプリケーションを有効にする"=true は役に立ちませんでした。

于 2010-11-09T07:54:09.093 に答える
0

広がっているとは思えません。アルゴリズムが並列化されていない可能性が高いため、コードは単一のコアで実行されます。

于 2010-11-08T10:57:36.207 に答える