C# 如何通过TCP增加.NET远程处理使用的线程数?
我们正试图通过TCP增加.NET远程处理使用的线程数。我们已经尝试更改ThreadPool.SetMinThreads,但是我们的压力测试表明.NET远程处理只能处理大约100个并发请求。(但这不是一个硬限制)。在TaskManager中,我们可以看到远程处理服务器进程线程数从11增长到大约80,然后在压力测试后又下降到11。我们正在运行ASP.NET 4.0应用程序。检查SetMinThreads的返回值 如果指定负数或大于活动线程池线程的最大数量(使用GetMaxThreads获得),SetMinThreads将返回false,并且不会更改任何最小值。C# 如何通过TCP增加.NET远程处理使用的线程数?,c#,asp.net,.net,multithreading,remoting,C#,Asp.net,.net,Multithreading,Remoting,我们正试图通过TCP增加.NET远程处理使用的线程数。我们已经尝试更改ThreadPool.SetMinThreads,但是我们的压力测试表明.NET远程处理只能处理大约100个并发请求。(但这不是一个硬限制)。在TaskManager中,我们可以看到远程处理服务器进程线程数从11增长到大约80,然后在压力测试后又下降到11。我们正在运行ASP.NET 4.0应用程序。检查SetMinThreads的返回值 如果指定负数或大于活动线程池线程的最大数量(使用GetMaxThreads获得),Set
()总而言之。远程处理服务器由windows服务托管,远程处理客户端由IIS托管。要执行压力测试,您可以使用apachebench调用远程客户端,远程客户端调用远程服务器。您注意到,尽管您增加了远程处理服务器上线程池中的最大线程数,但远程处理服务器处理的并发请求不超过100个 如果我所说的都是真的,我认为这里缺少一件事,即IIS也有可用于处理请求的线程限制。您可以从ApacheBench向远程处理客户端发送1000个请求,但只能同时处理其中的100个请求。我怀疑这可能是一个原因 为了增加IIS的线程数,我建议您尝试:
- 检查配置(请参见此)
- 尝试在IIS上使用
SetMinThreads
<configuration>
...
<system.net>
<connectionManagement>
<add address="*" maxconnection="1000"/>
</connectionManagement>
</system.net>
...
我有几个问题。1.您使用哪种远程对象?单例、单次呼叫、客户端或服务器激活?2.我不确定我是否理解正确。线程数下降对您来说是个问题吗。3.您的机器有多少处理器/内核?4.您使用IIS托管远程处理对象对吗?5.为什么要有这么多线程?是否要提高性能?SingleCall。客户端已激活。16芯。IIS托管远程处理客户端。Windows服务承载远程处理服务器。我们希望提高性能,因为我们注意到一次只能通过远程处理管道压缩100个请求(即使这些请求只执行线程。另一端睡眠)。我想问另外两件事。1.您在远程处理服务器上使用ThreadPool.SetMinThread
对吗?2.你是如何进行压力测试的?我想知道对服务器的请求是从IIS上托管的远程处理客户端发送的,还是从非IIS上托管的其他应用程序发送的?1)是的。2) 我们创建了一个远程服务器方法,它只需休眠10秒钟。然后,我们使用Apache Bench和1000个并发线程从远程处理客户端调用此方法(因此IIS是远程处理客户端)。之后我们还调用了GetMinThreads,以确认我们将min线程设置为我们所期望的。看来远程处理实际上并没有使用ThreadPool来管理它的线程。。。