我在windows服务中托管了一个WCF服务,InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple
使用listenbacklog="512“配置nettcp绑定,使用maxConcurrentCalls="512”配置服务行为。
服务器和客户端都运行在四核处理器上,不做任何其他事情。
我的测试客户端使用自动生成的代理,并在25个线程池线程上进行25个异步调用。尽管线程计数缓慢地增长到全部25个线程,但它会立即产生10个线程,然后每秒钟左右启动一个额外的线程。WCF服务器产生2-3个线程来服务请求。服务函数所做的工作只需要几百毫秒。完成所有客户端调用需要大约20秒的挂钟时间。
我已经分析了WCF服务器,它在ThreadStart_Context中花费了大部分时间调用waitone()
谁能告诉我为什么它这么慢?
发布于 2013-12-07 00:24:36
我认为这种行为的原因是WCF正在使用的ThreadPool。它不会太频繁地产生线程(达到最小值后每秒2个)。因此,您可以尝试增加ThreadPool的最小大小(不过,请先阅读此步骤的结果)。或者,您可以检查在这种情况下是否可以使用ThreadPool的替代品。
https://stackoverflow.com/questions/4889992
复制相似问题