我们正在尝试通过TCP增加.NET Remoting使用的线程数。我们尝试更改ThreadPool.SetMinThreads,但是我们的压力测试显示.NET Remoting只能处理大约100个并发请求。 (但这不是硬限制)。在任务管理器中,我们可以看到我们的远程处理服务器进程线程数从11增加到大约80,然后在压力测试后下降到11。我们正在运行ASP.NET 4.0应用程序。
答案 0 :(得分:4)
总结一下。远程服务器由IIS服务和远程客户端由IIS托管。要进行压力测试,请使用Apache Bench调用远程客户端调用远程服务器。您发现远程服务器处理的并发请求不超过100个,尽管您增加了远程服务器上线程池中的最大线程数。
如果我所说的都是真的,我认为这里缺少一件事,即IIS也有一个可用于处理请求的线程限制。您可以从Apache Bench向远程客户端发送1000请求,但仅限于,例如,其中100个将同时处理。我怀疑这可能是一个原因。
为了增加IIS的线程数,我建议您尝试:
SetMinThreads
。我方面的最后一条评论是你必须记住,线程池中线程数量太少,线程数量太多也不好。这两种情况都会影响绩效。
答案 1 :(得分:0)
检查SetMinThreads的返回值。
如果指定负数或大于活动线程池线程的最大数量(使用GetMaxThreads获取),则SetMinThreads返回false并且不会更改任何一个最小值。 (link)
答案 2 :(得分:0)
你确定瓶颈是线程,而不是网络连接..?默认情况下,.net每个远程IP可用的插槽数量相当有限。这适用于远程处理,http(WCF,Web服务客户端)等。
您可以在app config / web.config中的system.net/connectionManagement下覆盖此项,如果这是您所看到的,例如:
<configuration>
...
<system.net>
<connectionManagement>
<add address="*" maxconnection="1000"/>
</connectionManagement>
</system.net>
有关该配置设置的更多详细信息,请访问:https://msdn.microsoft.com/en-us/library/fb6y0fyc%28v=vs.110%29.aspx