2012-12-17 29 views
2

我有一个网络应用程序,由于在低流量下的低请求/秒而受到损害。平均请求执行时间大约为每页200毫秒。如何增加Asp.NET的持续执行时间的请求数/秒?

为了模拟环境,我使用一行代码在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内存,Win7企业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 

我打开性能监视器并观察请求/秒。无论我尝试如何增加它,它总是50。所有的硬件使用情况(CPU,内存)都非常低,所以必须有足够的空间来增加它。

我改变了machine.config中的processModel如下,没有运气。

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

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

+0

您需要在需要处理太多时间的页面上禁用会话 - 或者下载/上传也需要一些时间。 – Aristos

+0

@Aristos会话被禁用,所有不必要的httpmodules已被删除,如会话,windows认证,passportauthentication,urlauthorization,文件授权等。Web服务器和控制台应用程序在同一网络上。测试环境只是一个空的Asp.NET Web应用程序,其中只有一个测试页面。 – sspekinc

+0

好的,那么延迟在哪里 - 你知道什么是延迟你的网页? – Aristos

回答

-1

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

或者您的客户端应用程序未启动足够的线程以最大化服务器。这里问题的一部分是你正在同时测试两个应用程序。

对此的一个解决方案是使用久经考验的网络性能工具。这里有一个SO一个问题,会给你一些选项有:

ASP.NET Stress Testing

一旦你已经确定,它实际上是在你的服务器端应用程序这就是问题所在,让我们知道,我们可以进一步调查。

相关问题