我们试图增加.NET远程处理在TCP上使用的线程数。我们尝试过更改ThreadPool.SetMinThreads,但是我们的压力测试表明,.NET远程处理只能处理大约100个并发请求。(不过,这并不是一个硬性限制)。在任务管理器中,我们可以看到远程处理服务器进程线程数从11增长到大约80,然后在压力测试之后下降到11。我们正在运行一个ASP.NET 4.0应用程序。
发布于 2015-04-11 04:15:26
要而论之。远程处理服务器由windows服务托管,远程处理客户端由IIS托管。要完成压力测试,您可以使用Apache,它调用远程处理客户端,后者调用远程处理服务器。您注意到远程处理服务器处理的并发请求不超过100个,尽管您增加了远程处理服务器上线程池中的最大线程数。
如果我说的都是真的,我认为这里遗漏了一件事,即IIS也有一个线程的限制,可以用来处理请求。您可以从Apache向远程处理客户端发送1000个请求,但只能同时处理其中100个请求。我怀疑这可能是个原因。
为了增加IIS的线程数量,我建议您尝试:
SetMinThreads
。我的最后一个评论是,您必须记住,线程池中的线程数量太少,线程数量太多都不是好事。这两种情况都会影响性能。
发布于 2015-04-12 14:23:13
您确定瓶颈是线程而不是网络连接吗?默认情况下,.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
发布于 2015-04-10 19:51:54
检查您的返回值 of SetMinThreads。
如果指定负数或大于活动线程池线程最大数目的数字(使用GetMaxThreads获得),则SetMinThreads将返回false,并且不会更改最小值中的任何一个。(链接)
https://stackoverflow.com/questions/29441068
复制相似问题