我们在其中一个WCF网络服务中遇到了性能问题。
我们经历过:
但是,似乎根本没有创建新的IO线程,或者只是非常缓慢。
即使在96个被阻止的工作线程处于几分钟状态之后,也只有9个IO线程!
该服务在8核盒上运行。该池每个核心保留一个空闲线程。
http://theburningmonk.com/2010/05/wcf-improve-performance-with-greater-concurrency/(以及来自Wenlong Dong的所有博客文章)。
当请求排队已超过5分钟时,线程池大小似乎增加了一个额外的IO线程。
为什么IO线程池的大小只会缓慢变化,甚至根本不变?有哪些参数可以控制池的增长?
WinDbg输出:
0:000> !线程池 CPU利用率17% 工作线程:总计:97运行:96空闲:1 MaxLimit:800 MinLimit:8 队列中的工作请求:3
计时器数量:14
完成端口线程:总计:8免费:1 MaxFree:16 CurrentLimit:9 MaxLimit:800 MinLimit:8
待定工作项目:
统计: MT Count TotalSize类名 50e7c220 91 1820 System.ServiceModel.Channels.IOThreadScheduler + CriticalHelper + WorkItem 总计91个对象