与Web Server ASP.NET的多个连接

时间:2014-07-15 16:37:06

标签: asp.net web-services asmx

我有一个我在IIS 6上托管的ASP.NET Web服务(将来可能会更改为IIS 7)。 .asmx页面可能同时收到许多请求。每个CPU请求每个请求大约需要3秒才能在收到请求后返回响应(因此两个请求也会在双核上以3s的形式返回)。但是,当多个请求一次进入(或足够接近)时,服务似乎试图让它看起来像是同时处理所有这些请求。例如,如果有6个请求进入,则它们全部返回9s,而不是前3个返回3s,接下来的2个6s,最后2个9s。我的问题是:发生了什么(简要或精心设计,如果你有耐心:)),我如何限制从服务的角度创建的请求或线程的数量,最好不要对IIS进行任何更改或machine.config中?

提前致谢!

编辑: 为了澄清,我试图使Web服务在第一种情况下执行,其中前n个请求被处理(n =处理器数),然后是下一个。现在,如果我一次发送10个请求,服务会将所有这些请求收集在一起,并在所有处理器之间分配处理。在我看来,理论上,如果我可以告诉服务将同时处理的数量限制为n(对应于处理器的数量),那么我将实现我的目标。但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

Pro ASP.NET Web API: HTTP Web Services in ASP.NET书中 -

  

使用.NET Framework 4.0,默认配置设置为   适合大多数情况。例如,在ASP.NET 4.0和4.5中   MaxConcurrentRequestsPerCPU值默认设置为5000(它有   早期版本的.NET中的数字非常低。据团队介绍   IIS的成员,5000的值没什么特别的。它是   设置因为它是一个非常大的数字,并将允许充足的异步   请求并发执行。 此设置应该没问题,所以   没有必要改变它。

     

提示 Windows 7,Windows Vista和所有其他Windows客户端操作   系统最多可处理10个并发请求。你需要一个   Windows Server操作系统或使用IIS Express查看好处   高负荷下的异步方法。