【问题标题】:What happens when the maximum number of WCF connections is reached?达到最大 WCF 连接数时会发生什么?
【发布时间】:2012-04-23 06:32:22
【问题描述】:

我们有一个服务 (A) 调用另一个 WCF 服务 (B)。

服务 B 的默认值为

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

服务 A 最多可以生成 150 个线程,其中一些线程可以调用服务 B。

如果服务 A 以超过最大并发连接数调用服务 B 会发生什么?

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

【问题讨论】:

  • 额外的调用将等待定义的超时期限,如果在这段时间内没有服务实例可以为它们提供服务,它们将失败(很可能是TimeoutException)。
  • @marc_s - 我很想知道您为什么将这些信息放在评论中而不是答案中。

标签: .net wcf concurrency


【解决方案1】:

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

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

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

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

【讨论】:

  • 安德鲁,您的回答非常好,谢谢。我回到它,因为我想知道如何限制这个队列,你有没有发现什么或者你可以给我指明一个方向?您认为这可能与 tcp backlog 有关吗?
猜你喜欢
  • 2015-02-23
  • 2012-01-24
  • 2017-01-12
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 2018-03-03
相关资源
最近更新 更多