Не удалось получить семафор — конфигурация Zuul

Прочитав документацию по Spring cloud Zuul, я понял, что с изоляцией SEMAPHORE и максимальным количеством одновременных запросов около 2 сервер Zuul может легко обрабатывать около 5000 об/с. При значении около 2000 он выдает следующее исключение и показывает частоту ошибок 100%, когда я пытался вызвать службу из Jmeter.

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

person Deepak    schedule 14.07.2016    source источник


Ответы (1)


После некоторых тестов я обнаружил, что это должно быть:

zuul.semaphore.maxSemaphores: 30000

Это отличается от проблемы в github. Возможно это связано с версией.

person Mavlarn    schedule 06.02.2017
comment
Могу я узнать, какую версию zuul вы тестировали? @Мавларн - person Joey Trang; 14.06.2017
comment
версия весеннего облака Camden.SR2 и версия netflix zuul 1.3.0 - person Mavlarn; 15.06.2017
comment
да, мы используем zuul 1.1.2, поэтому он не работает. Я проверил код, есть улучшение для более поздней версии. - person Joey Trang; 15.06.2017