我有一个简单的.NET 4.5 HttpHandler,它似乎不能超过10个并发请求。我期待更高的数字。处理程序只执行一秒钟的休眠并返回一个简单的字符串。
concurrent requests requests/minute
1 60
8 480
9 540
10 600
11 600
12 600
15 600
32 600
512 600
我有一台64位Win7机器,配备4核i7,32GB内存和一块SSD,机器在所有测试中都处于空闲状态。 IIS配置为开箱即用。我也尝试使用IISTuner从Codeplex创建的应用程序池来运行它,但结果没有变化。
在true / false之间更改IsReusable不会做任何事情。
我在web.config中添加了一个条目来禁用会话状态。我正在使用SoapUI进行测试,并在每个请求标志设置后都有紧密连接(并且可以看到这反映在http标头中)。再一次,似乎没有任何改变。
修改每个应用程序池的进程数确实会增加数量,但仍然无法满足我预期的吞吐量(数百/数千个并发请求)。
这是处理程序:
class TestHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Thread.Sleep(1000);
context.Response.Write("I slept for 1s");
}
public bool IsReusable { get { return true; } }
}
以下是关联的web.config文件:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<sessionState mode="Off" timeout ="20" cookieless="false"></sessionState>
</system.web>
<system.webServer>
<handlers>
<add name="Proposal01_Test" verb="*"
path="*.test"
type="Proposal01.TestHandler, Proposal01"
resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
我错过了什么?
答案 0 :(得分:0)
问题出现在@Damien状态 - 再次感谢 - 这是Win7 / IIS7.5中的非服务器操作系统限制,我从未接受过,因为我们已经在相同的机器规模上将Java服务放入了成千上万的并发请求区域。 Yey MS。