调用外部Web服务的WCF服务会导致高负载环境中的超时

时间:2011-10-07 15:59:01

标签: wcf

我有以下的scneario:

我们的.NET客户端调用我们的WCF服务 - 该服务又调用外部第三方服务来检索某些数据。检索数据后,我们的WCF服务会设置一些值,然后将控制权返回给客户端。调用外部服务的过程必须是同步的。

我的问题是这一切都在低负载环境中工作,但是当负载变高时,我们开始排队多个请求,WCF服务开始超时。我们已将绑定的“sendTimeout”属性设置为5秒,之后会超时。

我尝试使用模拟的本地版本替换外部服务并处理负载确定但同时对外部服务的调用非常快 - 大约0.5秒。我只能假设超时正在发生,因为有太多的请求排队,而WCF服务无法在分配的5秒内响应。

我尝试了以下内容:

  • 设置maxConcurrentCalls,maxConcurrentSessions&的值。 maxConcurrentInstances到非常高的数字
  • 将system.net的值 - connectionManagement - maxconnection设置为一个非常高的数字

有没有人对我们在这个scneario中可以做些什么有任何想法?

1 个答案:

答案 0 :(得分:0)

你的cpu在这些高负载时间内达到峰值吗?如果没有,那么你可能会用完线程。使接收原始调用的wcf服务异步,然后异步调用外部服务。

你必须在整个调用链中使用asnyc模式,以确保没有任何东西阻止该线程。

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