2010-10-06 56 views
1

我有一个非常严重的多线程(同时数百到数千)的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之前?

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

回答

1

这很难诊断。发生这种情况可能有很多原因,并且在能够清楚地说出发生了什么之前,您必须找到有关系统的更好信息。您应该使用性能计数器来监视Web服务调用的数量并在Web服务器上进行处理。超时的原因可能是:

  • 限制服务只能处理有限数量的请求或只能同时处理有限数量的实例和会话。其他请求正在队列中等待服务器。加上缓慢的处理,这可能是一个很大的限制。
  • 为集服务
  • 网络带宽并发设置如果您的Windows服务洪水与各大邮件
  • HTTP连接持久性的网络 - 默认情况下,机器可以创建只有两个通过HTTP在同一台服务器的并行连接。其他请求正在客户端队列中等待。
  • 等+组合
+0

HTTP持久连接 - 默认情况下,机器只能通过HTTP创建两个到同一服务器的并行连接。其他请求正在客户端队列中等待。 - 这让我害怕。有没有什么办法来配置它。通过HTTP连接到一台服务器的最大连接数是多少? – Marcin 2010-10-07 09:11:10

+0

这是在HTTP协议中定义的。如果你想玩一些并行的HTTP连接,可以在客户端使用System.Net.ServicePointManager(可能是你的Windows服务)。它提供了名为DefaultConnectionLimit的属性。在客户端机器上,其默认值应为2.您可以更改此值以使用更多并行连接。 – 2010-10-07 09:46:03

0

我有一个WCF超时错误与被抛出没有其他异常。最终,我添加到配置文件中的标记可以启用跟踪,从而限制了有效负载大小,并防止发送响应表单。一旦我注释到标签,通常预期的响应就会恢复。

+0

更正:将跟踪标记留在那里作为注释最终导致System.ServiceModel.ServiceActivationExcception: 内存门检查失败,因为... 删除跟踪标记可解决此问题。 – Nagos 2016-02-18 21:45:22