com.netflix.zuul.исключение.Исключение ZuulException: истек тайм-аут чтения Hystrix

#spring-boot #netflix-eureka #netflix-zuul #hystrix #netflix-ribbon

#весенняя загрузка #netflix-эврика #netflix-zuul #hystrix #netflix-лента

Вопрос:

Я пытаюсь использовать микросервисы с eureka и zuul. И есть проблема со всеми запросами, которые занимают более 1 секунды. Как я понял, 1 секунда — это тайм-аут hystrix по умолчанию, и для настройки тайм-аутов в Zuul я должен настроить эти свойства:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
ribbon.ConnectTimeout
ribbon.ReadTimeout

но когда я их устанавливаю, для каждого из них в Intelije Idea появляется предупреждение «Не удается разрешить свойство конфигурации …». И, похоже, они не применяются и не работают.

Ответ №1:

Установка времени чтения ленты на сервере zuul должна решить эту проблему.

 ribbon:
  ReadTimeout: 60000
  

Примечание: В ReadTimeout чувствителен к регистру.

Комментарии:

1. Это устранило проблему. Спасибо

Ответ №2:

Добавьте следующее свойство в службу шлюза Zuul

hystrix:
команда:
по умолчанию:
выполнение:
изоляция:
поток:
Время ожидания в миллисекундах: 30000

лента: время
чтения: 60000
время ожидания подключения: 3000
эврика:
включено: true

zuul:
игнорируемые сервисы: ‘*’
хост:
время ожидания: -1
время ожидания подключения в миллисекундах: 5000
максимальное количество подключений на маршрут: 10000
максимальное количество подключений: 5000
время ожидания сокета в миллисекундах: 60000
семафор:
максимальное количество семафоров: 500

Комментарии:

1. Спасибо! Почему Netflix использует две записи — ReadTimeout и connection-timeout?

Ответ №3:

Ответ отредактирован

Таким образом, вы увеличите время ожидания Hystrix (глобально):

 hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000
  

или для каждой службы:

 hystrix:
  command:
    <serviceName>:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000
  

Комментарии:

1. к сожалению, это не работает. и после «hystrix» доступны только свойства: «metrics» и «shareSecurityContext». Свойства «command» нет

2. Отредактировано, попробуйте сейчас @Vados

3. Я получаю тайм-аут шлюза через 3 секунды, если я увеличил timeoutInMilliseconds значение до 10000

Ответ №4:

В вашем application.properties сервера zuul просто добавьте эти переменные:

 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 240000
ribbon.ConnectTimeout: 120000
ribbon.ReadTimeout: 120000
  

Вы также можете обновить свой проект в Intellij.