WCF:为什么线程池没有创建额外的IO线程

时间:2010-09-30 23:22:21

标签: .net wcf

我们在其中一个WCF网络服务中遇到了性能问题。

我们经历过:

  • ASP.NET耗尽了工作线程并开始排队。没有魔力。
  • WCF将要由IO线程处理的工作项排队。确定。
  • 我知道在创建新IO线程时可能会发生延迟。这些延误可能很大。

但是,似乎根本没有创建新的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个对象

0 个答案:

没有答案