Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 当达到最大WCF连接数时会发生什么情况?_.net_Wcf_Concurrency - Fatal编程技术网

.net 当达到最大WCF连接数时会发生什么情况?

.net 当达到最大WCF连接数时会发生什么情况?,.net,wcf,concurrency,.net,Wcf,Concurrency,我们有一个服务(a),它调用另一个WCF服务(B) 服务B的默认值为 <serviceThrottling maxConcurrentCalls="16" maxConcurrentSessions="10" maxConcurrentInstances="26" /> 服务A最多可以产生150个线程,其中一些线程可以称为服务B 如果服务A调用服务B的并发连接数超过最大值,会发生什么情况 服务B(WCF)是否将它们丢弃或存储在队列中?客户

我们有一个服务(a),它调用另一个WCF服务(B)

服务B的默认值为

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

服务A最多可以产生150个线程,其中一些线程可以称为服务B

如果服务A调用服务B的并发连接数超过最大值,会发生什么情况


服务B(WCF)是否将它们丢弃或存储在队列中?

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

当然,此行为表示存在另一个队列,该队列包含等待的连接请求。我假设队列有自己的阈值,所以一旦等待连接的数量达到最大值,就会丢弃更多的传入请求。(这只是我的猜测,我不知道这个理论队列是在哪里配置的……有人吗?)

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


额外的调用将等待定义的超时时间,如果在此时间内没有服务实例可用,它们将失败(很可能是
TimeoutException
)。@marc_s-我很好奇为什么你会将这些信息放在注释中而不是答案中。安德鲁,你的答案非常好,谢谢。我回到这里是因为我想知道如何限制排队,你有没有发现什么,或者你能给我指个方向?你认为这可能与tcp积压工作有关吗?