4

コードからの明示的なマルチスレッド化なしで、標準的な ASP.NET アプリケーション (ASP.NET Web フォーム、Entity Framework、SQL Server 2005) があります。スタギング環境(OS - Windows Server 2008 R2 64 ビット、CPU - Intel Xeon E5507 @ 2.27 GHz 2.34 GHz、RAM - 7.5 GB)にデプロイされています。この環境は、クラウド (Amazon EC2) 内のそれぞれ別のインスタンスである Web、データベース、およびレポート サーバーで構成されます。同時実行性をテストするときの観察結果は次のとおりです。

1 ユーザー - CPU 使用率 ~25%、応答時間 2 ~ 4 秒

2 ユーザー - CPU 使用率 40 ~ 50%、応答時間 3 ~ 6 秒

4 ユーザー - CPU 使用率 60 ~ 80%、応答時間 4 ~ 8 秒

8 ユーザー - CPU 使用率 80 ~ 100%、応答時間 4 ~ 10 秒

私の質問は次のとおりです。

  1. CPU 使用率は、いいえに相対的です。同時ユーザーの?そして、上記の観察結果に見られるように、応答時間は大幅に変化する可能性がありますか?

  2. 上記の観察から、同時ユーザー数が最大 10 の場合、CPU は最大に使用されます。CPU は、応答時間を大幅に増加させることなく、より多くの同時ユーザーをシームレスに処理するべきではないでしょうか? 理想的なシナリオでは、基本的な ASP.NET アプリケーションの場合、CPU が処理できる同時ユーザー数は?

  3. 上記の質問で「はい」の場合、高い CPU/長い応答時間の問題は何ですか? コード/IIS 設定のボトルネックを見つけるために効果的なデバッグを行うには、どうすればよいでしょうか?

PS: 変更された IIS 設定 (つまり、machine.config 内):

    maxWorkerThreads = 100
    MinWorkerThreads = 50
    maxIOThreads = 100
    minIOThreads = 50   
    minFreeThreads = 176        
    maxConnections = 100
4

1 に答える 1

2

高い CPU 使用率は、さまざまな原因で発生する可能性があります。何が起こっているかを調べる最も簡単な方法は、プロファイリング ツールを使用することです。

ANTS メモリ プロファイラー:
http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

ANTS パフォーマンス プロファイラー:
http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

非常に手頃な価格ですが、試用版で制限なく作業できるはずです。これらのツールは、ボトルネックとメモリ リークを特定する素晴らしい仕事をします。

于 2011-11-04T16:17:23.877 に答える