4

従来の ASP.NET アプリ - AppSrv + MS SQL DB。どちらのサーバーも 8 コア、20 GB の RAM を搭載した重量物です。負荷テストを行うと、スループットは (LoadRunner によると) 400 VirtualUsers になり、主にアイドル状態の DB サーバーで CPU が約 30% 使用されます。応答時間は劇的に増加し、応答しなくなります。

最大プールが使い果たされている、ASP.NET の接続制限が設定されているなどの通常の疑いは、誤りではありません。最大プールは 200 に設定され、約 80 の接続が使用されます。接続制限は 0 に設定されます。

コードを ANTS プロファイラーで実行したところ、スレッド ブロックが大きく寄与していないことがわかりました。

アイデア大歓迎です!

4

7 に答える 7

1

問題はおそらくあなたのmachine.configファイルにあります。

次の構成パラメータを確認する必要があります。

  • maxconnection
  • maxIoThreads
  • maxWorkerThreads
  • minFreeThreads
  • minLocalRequestFreeThreads

簡単な説明の確認: IIS 6.0 Tuning for Performance

ASP.NET 1.1 と ASP.NET 2.0 にはいくつかの違いがあります。

ASP.NET 1.1

あなたが見つけることができるいくつかの実用的な値に関するガイドライン:

デフォルト値は実際の使用には低すぎるため、リンクされた記事の提案に従って修正する必要があります。

ASP.NET 2.0

パラメータはセクションに移動されprocessModel、パラメータは自動設定されます。自動構成の他に、パラメータ値を手動で設定できるため、次のことを確認する必要があります。

  • processModel有効になっています
  • autoConfigtrue
    またはに設定されています
  • パラメータが正しい値に設定されている

詳細な説明については、ASP.Net 2.0 processModelを確認してください。

于 2008-10-28T14:06:05.857 に答える
1

CPU がホースされておらず、ページが応答しなくなる傾向がある場合、私の最初の予感はデータベースのロックです。テーブルのロックを解放しないと、1 つのスレッドが残りのスレッドを保持する可能性があり、その結果、db サーバーのアイドリング中にページが応答しなくなります。

SQL 監視ツールを使用して、データベース マシンが適切に使用されていることを確認し、すべてのユーザーがデータを適切に取得しているかどうかを確認できますか?

もう1つ。メモリ使用量についてどのような情報を提供できますか?

于 2008-10-28T09:28:52.063 に答える
1

適切な一意のリクエスト ID を使用してアプリにロギングを追加して、ページの読み込み内の各操作にかかる時間を効果的に追跡できるようにします。たとえば、すべてのデータベース呼び出しの前後にログを記録すると、データベース呼び出しに時間がかかっているかどうかがわかります。

他の人が示唆しているように、データベース側にロギング/プロファイリングを追加すると、それがデッドロックされている (または類似している) かどうかが表示されます。

于 2008-10-28T09:31:42.930 に答える
1

私たちは最近、次のIIS パフォーマンス設定ガイドを使用して Web アプリケーションを調整しましたが、これは非常にうまくいきました。

変更したサーバー固有の設定が 2 つあります。

ワーキング セットのメモリ使用量- Windows Server™ 2003 を実行しているサーバーは、既定で、メモリを割り当てるときにワーキング セットよりもファイル システム キャッシュを優先するように構成されています。Microsoft がこれを行っているのは、Windows が大規模なファイル システム キャッシュを持つことのメリットがあるためです。IIS は Windows オペレーティング システムを基盤としているため、大規模なファイル システム キャッシュを持つことからも利点が得られます。ただし、サーバーが専用の IIS サーバーである場合は、代わりに優先順位をワーキング セットに移すと、パフォーマンスが向上することがあります。この背後にある理由は、ファイル システム キャッシュが優先される場合、ページング可能なコードが仮想メモリに書き込まれることが多いためです。次にこの情報が必要になったときは、別のものを仮想メモリにページングし、以前にページングした情報を使用する前に物理メモリに読み込む必要があります。これにより、処理が非常に遅くなります。

ネットワーク スループット- 既定では、Windows Server 2003 を実行しているサーバーは、メモリを割り当てるときに、プロセスのワーキング セットよりもファイル システム キャッシュを優先するように構成されています (ファイル共有のデータ スループットを最大化するサーバー プロパティを使用)。IIS 6.0 ベースのサーバーは大容量のファイル システム キャッシュの恩恵を受けますが、ファイル システム キャッシュを優先すると、多くの場合、IIS 6.0 のページング可能なコードがディスクに書き込まれ、処理の遅延が長くなります。このような処理の遅延を回避するには、ネットワーク アプリケーションのデータ スループットが最大になるようにサーバー プロパティを設定します。

以下のサービスは、専用 Web サーバーでは必要ありません。

  • アラータ
  • クリップブック
  • コンピュータのブラウザ
  • DHCP クライアント
  • DHCP サーバー
  • ファックスサービス
  • ファイル複製
  • 赤外線モニター
  • インターネット接続の共有
  • メッセンジャー
  • NetMeeting リモート デスクトップ共有
  • ネットワーク DDE
  • ネットワーク DDE DSDM
  • NWLink NetBIOS
  • NWLink IPX/SPX
  • 印刷スプーラー
  • TCP/IP NetBIOS ヘルパー サービス
  • 電話
  • Telnet
  • 無停電電源装置
于 2008-10-28T11:47:27.527 に答える
0

また、ネットワークの飽和状態を確認してください。負荷テストマシンとWebサーバー間のネットワーク接続を最大限に活用していないことを確認してください。また、Webとデータベースサーバー間で大量の大量のテキスト/バイナリデータを返す場合は、そのネットワーク接続を監視します。

于 2008-10-28T10:47:44.370 に答える
0

それは一筋縄ではいかないかもしれませんが、コードをPatterns and Practices Checkerで実行して、容易に達成できる成果が得られるかどうかを確認してみてください。

于 2008-10-28T13:26:10.243 に答える
0

ホストはアプリケーション プールを利用していますか?

数を 5 ~ 10 に増やしてみましたか

An Application Pool -> Performance -> 
Web Garden -> Max Number of worker processes
于 2008-10-28T09:16:57.203 に答える