Hystrix & Ribbon Timeout Warnings - PullRequest
       93

Hystrix & Ribbon Timeout Warnings

0 голосов
/ 31 мая 2018

Среда

  • Spring Boot 1.5.13.RELEASE
  • Spring Cloud Edgware.SR3
  • Скомпилировано с версией Java "1.8.0_172-ea", Java(TM) Среда выполнения SE (сборка 1.8.0_172-ea-b03) и уровень источника 1.8
  • JRE времени выполнения: в докере с openjdk:10.0.1-jre-slim

Вопрос

У меня есть ленточный клиент по имени serviceA и связанный

serviceA.ribbon.ConnectTimeout=5000
serviceA.ribbon.ReadTimeout=15000
hystrix.command.serviceA.execution.isolation.thread.timeoutInMilliseconds = 20000

Я не получил (сознательно) повторную попытку на пути к классам.Я выполняю ./mvnw dependency:list | grep -i retry и не получаю результатов.

Во время выполнения я получаю следующие предупреждения:

Время ожидания Hystrix 20000 мс для команды serviceA установлено ниже, чем комбинация лентытайм-аут чтения и подключения, 40000 мс.

Я не уверен, откуда взялись эти цифры, учитывая, что я решил установить их на 15 и 5 секунд соответственно.Почему эта цифра двойная?

1 Ответ

0 голосов
/ 05 июня 2018

На самом деле, время ожидания ленты включает все те же повторные попытки сервера и следующую повторную попытку сервера.

ribbonTimeout = (ribbon.ConnectTimeout + ribbon.ReadTimeout) * (ribbon.MaxAutoRetries + 1) * (ribbon.MaxAutoRetriesNextServer + 1);
// ...
if(hystrixTimeout < ribbonTimeout) {
        LOGGER.warn("The Hystrix timeout of " + hystrixTimeout + "ms for the command " + commandKey +
            " is set lower than the combination of the Ribbon read and connect timeout, " + ribbonTimeout + "ms.");
    }

В вашей конфигурации:

  • ribbon.connectionTimeout равно 5000
  • tape.readTimeout равно 15000
  • *
    (5000 + 15000) * (1 + 0) * (1 + 1) // -> 40000 ms
    

    Если вы решите не настраивать тайм-аут Hystrix, по умолчанию тайм-аут Hystrix будет 40000 мс.

    19.13 Тайм-ауты Zuul в Spring Cloud Document

...