我有一个非常严重的多线程(同时数百到数千)的Windows服务。 这些线程扫描不同的机器并调用一个Web服务器的WCF Web服务。 最近我开始出现超时错误。这让我困惑的事情是帮助解密WCF超时错误
请求信道超时而 后 00等待答复:02:41.8806080。将传递给呼叫的超时值增加到 请求或增加绑定上的SendTimeout值 值。分配给此操作的时间 可能有 是较长超时的一部分。 服务器堆栈跟踪:....异常 重新抛出在[0]:... HTTP请求 到的 'http://XXX/XXX/MonitorService.svc' 已超过 00:10分配的超时:00。分配给此操作的时间可能是更长超时的部分 。在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(引发WebException 引发WebException,HttpWebRequest的要求, HttpAbortReason abortReason)
我的问题是在在7分钟内发生了什么?它是在客户端等待10分钟,而在网络服务器上等待2:41? 为什么会这样? 如果我在同一时间从不同的线程数百次调用web服务,它是 莫名其妙地排队在客户端上?甚至在到达IIS之前?
我感谢任何帮助。非常感谢提前。
HTTP持久连接 - 默认情况下,机器只能通过HTTP创建两个到同一服务器的并行连接。其他请求正在客户端队列中等待。 - 这让我害怕。有没有什么办法来配置它。通过HTTP连接到一台服务器的最大连接数是多少? – Marcin 2010-10-07 09:11:10
这是在HTTP协议中定义的。如果你想玩一些并行的HTTP连接,可以在客户端使用System.Net.ServicePointManager(可能是你的Windows服务)。它提供了名为DefaultConnectionLimit的属性。在客户端机器上,其默认值应为2.您可以更改此值以使用更多并行连接。 – 2010-10-07 09:46:03