2

中程度のトラフィックで1 秒あたりのリクエスト数が少ないために問題が発生している Web アプリケーションがあります。リクエストの平均実行時間は、1 ページあたり約 200 ミリ秒です。

環境をシミュレートするために、1 行のコードで Asp.NET 4.0 Web アプリケーションに非常に単純なテスト ページを作成しました。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    System.Threading.Thread.Sleep(200)
End Sub

4コアCPU、8GB RAM、Win7 Enterprise 64ビット、クリーンインストールのサーバーに公開しました。

次に、このテスト ページに負荷をかける非常に単純なコンソール アプリケーションを作成しました。

    For i = 1 To 100
        For j = 1 To 100
            Dim client = New System.Net.WebClient

            client.DownloadStringAsync(New Uri(address))
        Next
        Threading.Thread.Sleep(1000)
    Next

パフォーマンス モニターを開いて、Requests/sec を観察しました。どう頑張っても50でした。すべてのハードウェア (CPU、メモリ) の使用率が非常に低かったため、それを増やす余地が十分にあるはずです。

以下のように machine.config の processModel を変更しましたが、うまくいきませんでした。

<processModel autoConfig="false" maxWorkerThreads="1000" maxIoThreads="1000" minWorkerThreads="500" minIoThreads="500" />

では、ハードウェアをフルに活用し、1 秒あたりの処理要求数を増やすにはどうすればよいでしょうか?

4

1 に答える 1

-1

サーバー側で 1 つのスレッドのみを使用している場合、1 秒あたり 1000/200 = 5 リクエストになります。しかし、あなたは50を取得しています。したがって、サーバーは複数のスレッドを持つことを許可しているようですが、十分ではありません.

または、クライアント アプリがサーバーを最大限に活用するのに十分な数のスレッドを起動していない可能性があります。ここでの問題の一部は、同時に 2 つのアプリケーションをテストしていることです。

これに対する 1 つの解決策は、実証済みの Web パフォーマンス ツールを使用することです。ここにいくつかのオプションを提供するSOに関する質問があります:

ASP.NET ストレス テスト

問題が実際にサーバー側アプリケーションにあることを確認したら、お知らせください。さらに調査いたします。

于 2012-12-29T23:42:52.663 に答える