我有一个非常多线程的Windows服务(同时数百到数千)。 这些线程扫描不同的计算机并调用一个Web服务器的WCF Web服务。 最近我开始收到Timeout错误。令我困惑的是
请求频道超时了 等待回复之后 的 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之前?
我感谢任何帮助。非常感谢提前。
答案 0 :(得分:1)
这很难诊断。可能有很多原因导致这种情况发生,您必须先找到有关系统的更好信息,然后才能清楚地说明发生了什么。您应该使用性能计数器来监视Web服务调用的数量和Web服务器上的处理。超时的原因可能是:
答案 1 :(得分:0)
我遇到了WCF超时错误,没有抛出其他异常。最终我添加到配置文件中的标签使得跟踪能够以某种方式限制有效负载大小,并且只是阻止发送响应表单。只要我注释掉标签,就会恢复正常预期的响应。