2

我有一个 Web 应用程序,由于在中等流量下请求/秒低而受到影响。平均请求执行时间约为每页 200 毫秒。

为了模拟环境,我用一行代码在 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" />

那么,我需要做些什么来利用我的全部硬件并增加每秒处理的请求数?

4

1 回答 1

-1

如果您只在服务器端使用单个线程,您将获得每秒 1000/200 = 5 个请求。但是你得到了 50 个。所以看起来服务器允许你有多个线程,只是不够多。

或者您的客户端应用程序可能没有启动足够的线程来最大化服务器。这里的部分问题是您同时测试两个应用程序。

一种解决方案是使用久经考验的 Web 性能工具。这是一个关于 SO 的问题,它将为您提供一些选择:

ASP.NET 压力测试

一旦您确定问题实际上是您的服务器端应用程序,请告诉我们,我们可以进一步调查。

于 2012-12-29T23:42:52.663 回答