【发布时间】:2011-12-07 14:39:14
【问题描述】:
我已经在这里问过一个类似的问题:WCF Service calling an external web service results in timeouts in heavy load environment,但我现在对发生的事情有了更好的了解,所以发布一个新问题。
这是正在发生的事情:
- .NET 客户端同时向 WCF 服务发送多个请求(如果有帮助 - 我正在使用 Visual Studio 负载测试复制此场景)
- 客户端已将“sendTimeout”设置为 5 秒
- WCF 服务接收它并开始处理它。该处理涉及向外部服务发送请求,该请求可能需要大约 1 秒才能返回响应
- 这就是我认为问题所在:客户端已向服务发送了许多请求,并且由于服务仍在忙于处理并发请求,因此来自客户端的一些请求在 5 秒后超时
我尝试了以下方法:
- 将 InstanceContextMode 更改为 PerCall
- 增加了 maxConcurrentCalls 和 maxConcurrentInstances 的值
- 增加了 machine.config 中 connectionManagement.maxconnection 的值
但这些似乎都没有任何区别。有谁知道如何确保我不会遇到这个超时问题?
【问题讨论】:
-
感谢大家的帮助和指点。我想我找到了问题所在。我不得不增加 maxConcurrentCalls 和 maxConcurrentSessions 的值——这反过来意味着服务必须有 PerCall 的 InstanceContextMode。我之前也这样做过,但是在我的负载测试中是在测试一个单元测试,而这些配置更改没有任何区别。当我创建一个新的 Web 测试然后对其进行负载测试时,一切似乎都很好地结合在一起。但一直无法弄清楚为什么会这样!
标签: wcf