帮助解密WCF超时错误

时间:2010-10-06 20:28:03

标签: wcf timeout

我有一个非常多线程的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之前?

我感谢任何帮助。非常感谢提前。

2 个答案:

答案 0 :(得分:1)

这很难诊断。可能有很多原因导致这种情况发生,您必须先找到有关系统的更好信息,然后才能清楚地说明发生了什么。您应该使用性能计数器来监视Web服务调用的数量和Web服务器上的处理。超时的原因可能是:

  • 对服务进行限制,该服务只能处理有限数量的请求,或者同时只保存有限数量的实例和会话。其他请求正在服务器上排队等待。加上缓慢的处理,这可能是一个很大的限制。
  • 单件服务的并发设置
  • 如果您的Windows服务充斥着许多重要消息,那么网络带宽
  • HTTP持久连接 - 默认情况下,计算机只能通过HTTP创建到同一服务器的两个并行连接。其他请求正在客户端排队等候。
  • 等。 +组合

答案 1 :(得分:0)

我遇到了WCF超时错误,没有抛出其他异常。最终我添加到配置文件中的标签使得跟踪能够以某种方式限制有效负载大小,并且只是阻止发送响应表单。只要我注释掉标签,就会恢复正常预期的响应。