2016-07-14 62 views
4

阅读了关于Spring云Zuul的文档后,我已经理解,通过SEMAPHORE隔离和大约2个最大并发请求,Zuul服务器可以轻松处理大约5000个rps。当我试图从Jmeter调用服务时,它的值大约为2000,它抛出以下异常并显示错误率为100%。无法获取信号量--Zuul配置

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

然后我就碰到了最大并发请求数20万,但仍然它抛出的异常,但错误率已经下降到10%。 您能否让我知道原因。这是因为Spring云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 

回答

2

一些测试后,我发现它应该是:

zuul.semaphore.maxSemaphores: 30000 

它是从github上the issue不同。也许它与版本有关。

+0

我可以知道您测试的zuul版本吗? @Mavlarn – Joey

+0

春天的云版本Camden.SR2和netflix zuul版本是1.3.0 – Mavlarn

+0

是的,我们使用zuul 1.1.2,这就是为什么它不工作。我已经检查过代码,以后有更新的版本。 – Joey