我们有一个在服务器上运行的Web服务,它由在2台服务器上运行的Windows服务调用,总共有3台服务器。
偶尔(例如,一个月/ 3个月/ 6个月),Windows服务正在记录此错误消息“线程池中没有足够的免费threds来完成操作”。
webservice很简单,它接受一个参数并返回一个字符串。
发生错误后,服务器上的特定Windows服务因后续请求而失败。
不确定这个错误的原因,有什么帮助吗?
答案 0 :(得分:0)
由于this KB article中解释的原因,ASP.NET 1.x应用程序中常常出现此问题,这些应用程序会产生大量并发的出站Web服务请求。
重写了.NET 2.0中的HTTP堆栈,使其不太可能发生,但据我所知,如果并发加载模式导致线程池使用量过大,问题仍然会出现。
您可以通过仔细调整Windows服务应用程序的线程池参数来减少甚至消除其发生率。