【问题标题】:Getting WCF Service timeout after a while (20 minutes)一段时间后(20 分钟)获取 WCF 服务超时
【发布时间】:2010-09-14 17:23:39
【问题描述】:

我有一个高度多线程的 Windows 服务。每个线程调用 WCF Service 的各种方法。大约一段时间后,我对 WCF 服务的所有调用都会导致超时:

请求通道超时 尝试在 00:10:00 之后发送。 增加传递给的超时值 调用请求或增加 Binding 上的 SendTimeout 值。这 分配给此操作的时间可能 已经是较长时间的一部分 超时

你可以看到超时是 10 分钟,我也试过这个:

serviceThrottling maxConcurrentCalls="200" maxConcurrentInstances="200" maxConcurrentSessions="200"/>

但这并没有帮助。

我已经使用 Process Explorer 检查了 w3wp.exe,但我找不到任何可以将我指向某个地方的东西。 我与网络服务建立的所有连接都已关闭。

有人知道如何解决这个问题吗? 我想知道呼叫是否得到了正确处理,但呼叫太多,所以他们开始超时,还是他们挂在那里,只是等待?

我如何查看这个? 我在想服务器只是过载了,但只有 CPU 超过 50%,内存没有。

【问题讨论】:

标签: wcf


【解决方案1】:

看看idleTimeout:

<system.web>
<hostingEnvironment idleTimeout="20"
                    shutdownTimeout="30"/>
 </system.web>

这通常设置为 20 分钟,您需要更改它。

更新 更多信息在这里:

http://msdn.microsoft.com/en-us/library/bb332338.aspx

【讨论】:

    【解决方案2】:

    答案是性能计数器。这是一个如此复杂的解决方案,您可以简单地在一些跟踪中对其进行监控。您需要用于健康监控的重量级工具 = 内置和自定义性能计数器。您可以为您的 Windows 服务实现自定义计数器并监控每秒创建了多少调用以及完成了多少调用。您还可以将build in counters 用于 WCF 服务来监控正在运行的实例数量以及每秒处理的调用数量。如果这些值相差很大,您就有问题了 - 您的服务充斥着无法及时处理的请求。

    您还可以从简单的测试开始,以监控 WCF 服务的处理需要多长时间。如果您的处理需要 1 秒,那么您每秒调用该服务的次数就不能超过 200 次。

    【讨论】:

    • 非常感谢拉迪斯拉夫。我想你是对的。我希望有一些开箱即用的东西,可以告诉我有多少请求正在进入,有多少正在处理,有多少失败等等......我会试试你的建议。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2011-02-27
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多