Spring Cloud: ошибка Zuul Broken Pipe

Я провожу стресс-тест простого облачного приложения spring, поддерживаемого прокси-службой zuul. Время от времени у нас возникает исключение из-за неработающего канала из-за устаревшего соединения между Zuul и службой. Я безуспешно настраиваю Zuul с различными параметрами конфигурации:

hystrix:
  command:
    default:
      execution:
        isolation:
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 61000


ribbon:
  ReadTimeout: 60000
  ConnectTimeout: 6000

zuul:
  host:
    socket-timeout-millis: 60000
    connect-timeout-millis: 60000

Заранее спасибо за любую подсказку для решения этой проблемы. Исключение составляет следующее: `

com.netflix.zuul.exception.ZuulException: ошибка переадресации на org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:151) ~[router.jar!/:0.0.1] на org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.run(RibbonRoutingFilter.java:114) ~[router.jar!/:0.0.1] в com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java :112) ~[zuul-core-1.0.28.jar!/:na]

Причина: com.netflix.hystrix.exception.HystrixRuntimeException: сбой команды query-serviceRibbonCommand, резервный вариант недоступен. на com.netflix.hystrix.AbstractCommand$20.call(AbstractCommand.java:816) ~[hystrix-core-1.4.0-RC6.jar!/:na] на com.netflix.hystrix.AbstractCommand$20.call(AbstractCommand. java:798) ~[hystrix-core-1.4.0-RC6.jar!/:na] в rx.internal.operators.OperatorOnErrorResumeNextViaFunction$1.onError(OperatorOnErrorResumeNextViaFunction.java:77) ~[rxjava-1.0.4.jar! /:1.0.4] в rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:70) ~[rxjava-1.0.4.jar!/:1.0.4]

Вызвано: java.net.SocketException: сломанный канал в java.net.SocketOutputStream.socketWrite0 (собственный метод) ~[na:1.8.0_45] в java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) ~[na: 1.8.0_45] в java.net.SocketOutputStream.write(SocketOutputStream.java:153) ~[na:1.8.0_45] в org.apache.http.impl.io.AbstractSessionOutputBuffer.flushBuffer(AbstractSessionOutputBuffer.java:159) ~[ httpcore-4.3.3.jar!/:4.3.3] ... в rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55) ~[rxjava-1.0.4.jar!/:1.0.4 ] на com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:185) ~[ribbon-loadbalancer-2.0-RC13.jar!/:na] на com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call (LoadBalancerCommand.java:180


person Juan Carlos Vergara Santos    schedule 13.10.2015    source источник
comment
Вам когда-нибудь удавалось решить эти проблемы, мы сталкиваемся с аналогичными проблемами здесь.   -  person berlinguyinca    schedule 01.04.2016


Ответы (1)


У меня возникла та же проблема: я решил ее, добавив время ожидания выполнения zuul в application.yml сервера zuul:

# Increase the Hystrix timeout to 60s (globally)
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 60000

Пожалуйста, обратитесь к этой ветке по вопросам netflix: https://github.com/spring-cloud/spring-cloud-netflix/issues/321

person Rafik    schedule 06.04.2016
comment
Я также попробовал конфигурацию hystrix, но изменил стратегию на THREAD, какую версию облака Spring вы используете? Спасибо - person Juan Carlos Vergara Santos; 17.04.2016
comment
Я работаю на весеннем облаке Angel.SR6 (используя родитель весеннего облака). - person Rafik; 18.04.2016