【问题标题】:Couldn't acquire semaphore - Zuul Configuration无法获取信号量 - Zuul 配置
【发布时间】:2016-11-17 00:43:26
【问题描述】:

在阅读了 Spring cloud Zuul 的文档后,我了解到在 SEMAPHORE 隔离和最大并发请求数约为 2 的情况下,Zuul 服务器可以轻松处理约 5000 rps。当我尝试从 Jmeter 调用服务时,它的值约为 2000,它会引发以下异常并显示 100% 的错误率。

com.netflix.hystrix.exception.HystrixRuntimeException: 
Service1 could not acquire a semaphore for execution and no fallback available.

然后我将最大并发请求数提高到 200000,但它仍然抛出异常,但错误率已下降到 10%。 你能告诉我这是什么原因吗?这是因为微服务速度慢还是 Spring cloud Zuul 中的任何配置问题?以下是配置:

ribbon:
 ConnectTimeout: 20000000
 ReadTimeout: 20000000
 MaxTotalHttpConnections: 5000
 MaxHttpConnectionsPerHost: 5000
 ActiveConnectionsLimit: 4000

 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 20000000
 zuul.hystrix.command.default.execution.isolation.strategy: SEMAPHORE
 zuul.hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests: 2000
 zuul.hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests: 2000
 zuul.eureka.default.semaphore.maxSemaphores: 30000

【问题讨论】:

  • 遇到同样的问题,请问您解决了吗?

标签: java spring spring-cloud netflix-zuul


【解决方案1】:

经过一些测试,我发现应该是:

zuul.semaphore.maxSemaphores: 30000

它与github中的the issue不同。可能跟版本有关。

【讨论】:

  • 我可以知道你测试的是哪个zuul版本吗? @Mavlarn
  • spring cloud 版本是 Camden.SR2,而 netflix zuul 版本是 1.3.0
  • 是的,我们使用的是 zuul 1.1.2,这就是它无法正常工作的原因。我检查了代码,以后版本有增强。
猜你喜欢
  • 2011-10-24
  • 2017-12-22
  • 2011-04-28
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2018-05-26
相关资源
最近更新 更多