【问题标题】:Help with deciphering WCF timeout errors帮助破译 WCF 超时错误
【发布时间】:2011-04-22 01:16:57
【问题描述】:

我有一个非常多线程的 Windows 服务(同时有数百到数千个)。 这些线程扫描不同的机器并调用一个 Web 服务器的 WCF Web 服务。 最近我开始收到超时错误。让我困惑的是

请求通道超时,而 等待回复后 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 分钟,但在 Web 服务器等待 2:41? 为什么会这样? 如果我同时从不同的线程调用一个网络服务数百次是吗 不知何故在客户端排队?甚至在到达 IIS 之前?

感谢您对此提供的任何帮助。提前非常感谢。

【问题讨论】:

    标签: wcf timeout


    【解决方案1】:

    我收到了 WCF 超时错误,没有引发其他异常。最后,我添加到配置文件中以启用跟踪的标签以某种方式限制了有效负载的大小,只是阻止了响应表单的发送。一旦我注释掉标签,通常预期的响应就会恢复。

    【讨论】:

    • 更正:将跟踪标记保留在其中作为注释最终会导致 System.ServiceModel.ServiceActivationExcception:内存门检查失败,因为...删除跟踪标记可以解决此问题。
    【解决方案2】:

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

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

    【讨论】:

    • HTTP 持久连接 - 默认情况下,机器只能通过 HTTP 创建到同一服务器的两个并行连接。其他请求在客户端队列中等待。 - 这让我害怕。有没有办法配置这个。通过 HTTP 到一台服务器的最大连接数是多少?
    • 这是在 HTTP 协议中定义的。如果您想玩多个并行 HTTP 连接,请在客户端使用 System.Net.ServicePointManager(可能是您的 Windows 服务)。它提供名为 DefaultConnectionLimit 的属性。在客户端计算机上,其默认值应为 2。您可以更改此值以使用更多并行连接。
    猜你喜欢
    • 2011-03-28
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2015-06-02
    • 2011-01-01
    • 2013-07-11
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多