2012-04-23 66 views
3

我们有一个服务(A)调用另一个WCF服务(B)。当达到最大WCF连接数时会发生什么?

服务B具有

<serviceThrottling 
     maxConcurrentCalls="16" 
     maxConcurrentSessions="10" 
     maxConcurrentInstances="26" /> 

服务A的默认值可以生成多达150个线程,它们中的一些可拨打服务B.

会发生什么,如果一个服务与更多的呼叫服务B比并发连接的最大数量多?

服务B(WCF)将它们抛弃或将它们存储在队列中吗?

+2

额外的通话将等待定义的超时时间,如果没有服务实例可用于在这段时间内为他们服务,他们会失败(最有可能以'TimeoutException')。 – 2012-04-23 06:51:15

+0

@marc_s - 我很想知道你为什么把这些信息放在评论中,而不是答案。 – 2012-04-23 07:04:11

回答

3

客户端被阻塞,直到连接可用。

当然,这种行为表明存在另一个队列,持有等待连接请求。我假设队列会有自己的阈值,所以一旦有最大数量的等待连接,进一步的传入请求就会被抛弃。 (这只是我的猜想,我不知道这个理论队列在哪里配置,.....有人?)。

在我的自动化测试中,实际上遇到了一个问题,连接没有被丢弃,最终导致我的系统挂起,因为达到了阈值。

https://stackoverflow.com/a/4031284/25216

+0

Andrew,你的回答非常好,谢谢。我回到了它,因为我想知道我可以如何限制这个队列,你有没有发现任何东西,或者你可以指向一个方向?你认为它可能与tcp积压有关,也许? – Mithir 2012-07-24 12:41:03

相关问题