Панель инструментов Hystrix с Spring Boot, развернутая на PCF, не показывает метрики

Я создал простое приложение, используя Spring boot и библиотеку hystrix для Spring Cloud Starter.

В моем build.gradle:

dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.cloud:spring-cloud-starter-hystrix-dashboard:1.0.0.RC2")
compile("org.springframework.cloud:spring-cloud-starter-hystrix:1.0.0.RC2")
}

Я развернул одно приложение в качестве приборной панели hystrix, используя вышеуказанные библиотеки и @EnableHystrixDashboard

Затем я развернул другое приложение с аннотацией @EnableHystrix.

Я добавил компонент, у которого есть команда, которую я вызываю через контроллер, просто для проверки:

@HystrixCommand(fallbackMethod = "onFailedToSayHello")
public String sayHello(Map<String, String> parameters) {
    if (parameters.get("fail") != null && parameters.get("fail").equals("yes")) {
        throw new RuntimeException("I failed because you told me to");
    }
    return "Hello";
}

private String onFailedToSayHello(Map<String, String> parameters) {
    return "Bye";
}

Приложение hystrix работает нормально. Когда я нажимаю URL-адрес, я вижу поток, результат которого я помещаю здесь .

Я просто вижу, как это повторяется снова и снова.

Моя панель инструментов запущена и работает, и когда я ввожу URL-адрес своего запущенного примера приложения hystrix, я получаю экран загрузки:

экран загрузки панели управления hystrix

Затем, когда я снова проверяю свое приложение hystrix, я вижу это:

λ curl http://myappurl/hystrix.stream
{"timestamp":1423748238280,"status":503,"error":"Service      Unavailable","message":"MaxConcurrentConnections reached: 5","path":"/hystrix.stream"}

Я не уверен, куда идти отсюда. Я попытался развернуть войну приборной панели hystrix вместо того, чтобы создавать ее самостоятельно, которую я скачал с здесь, но получил тот же результат.

Я также заметил некоторые выходные данные об ошибках JavaScript в консоли браузера, которые я помещаю здесь на случай, если они есть. использовать.

И в журналах сервера я вижу, что это повторяется снова и снова:

2015-02-15 20:03:55.324 ИНФОРМАЦИЯ 9360 --- [nio-8080-exec-9] ashboardConfiguration$ProxyStreamServlet:

Прокси открывает соединение с: http://myappurl/hystrix.stream

Сейчас я попытаюсь запустить turbine и посмотреть, поможет ли это каким-то волшебным образом исправить ситуацию. Думаю, я тоже опубликую здесь, хотя на всякий случай кто-то может заметить ошибку с моей стороны, основываясь на том, что я сделал до сих пор.

РЕДАКТИРОВАТЬ: Важный момент, о котором я не упомянул, заключается в том, что у меня есть и приложение, и панель инструментов, развернутые на PCF. Это кажется важным, поскольку эта проблема не возникает при локальном развертывании. Все еще не знаю, что вызывает это, хотя.


person Ruairi O'Brien    schedule 12.02.2015    source источник
comment
По умолчанию разрешено только 5 подключений к потоку hystrix. Установите hystrix.stream.maxConcurrentConnections: 20. Можете ли вы попробовать 1.0.0.RC3, который только что вышел? Есть некоторые исправления для приборной панели hystrix.   -  person spencergibb    schedule 14.02.2015
comment
Спасибо за ваш комментарий @spencergibb. Я попытался обновить приложение и панель инструментов до версии 1.0.0.RC3, но получил ту же ошибку. Я изменил максимальное количество одновременных подключений на 20 и получил аналогичную ошибку: {отметка времени: 1424029687607, статус: 503, ошибка: служба недоступна, сообщение: достигнуто максимальное число подключений: 20, путь:/hystrix.stream}. Похоже на этот github.com/Netflix/Hystrix/issues/85, но я не не нашел там ничего полезного, так как это старая проблема с hystrix, которая была исправлена ​​​​некоторое время назад.   -  person Ruairi O'Brien    schedule 15.02.2015
comment
что у вас есть подключение к нему, что занимает 20 подключений?   -  person spencergibb    schedule 16.02.2015
comment
Насколько я понимаю, это приборная панель. Когда я указываю панели мониторинга на свое приложение, возникает ошибка, и я вижу, что это повторяется в журналах приложения панели мониторинга: «Прокси открывает соединение с: myappurl/hystrix.stream'. Затем я больше не могу получить доступ к потоку и получаю ошибку 503. Когда я закрываю приборную панель, 503 останавливается, и я снова вижу поток. Поток выглядит нормально. Я вижу правильный тип контента - Content-Type:text/event-stream;charset=UTF-8. Это действительно немного странно. Я сбит с толку. Надеюсь, у меня будет время изучить его в течение следующих нескольких дней, и я обновлю здесь, если что-нибудь найду.   -  person Ruairi O'Brien    schedule 16.02.2015
comment
ошибка в сервлете блокировала доступ при отсутствии данных, попробуйте обновить до версии 1.4.0-rc.9 >github.com/Netflix/Hystrix/commit/   -  person mestachs    schedule 24.02.2015
comment
@mestachs - спасибо. Обновление версии сервера hystrix действительно решило проблему слишком большого количества открытых подключений, как это выглядит. Тем не менее, никакой статистики на приборной панели нет. Однако, похоже, это проблема при работе в облачном литейном производстве.   -  person Ruairi O'Brien    schedule 25.03.2015
comment
Извините, я мало знаю об облачном литейном производстве. Как насчет устранения неполадок с разными URL-адресами (браузер js -> прокси сервлет в войне панели управления -> потоковый сервлет в войне турбины (проверьте свойства экземпляров кластера по умолчанию, может ли он напрямую обращаться к узлам кластера?) -> каждый узел hystrix сервлет .stream   -  person mestachs    schedule 25.03.2015


Ответы (2)


Проблема исчезнет, ​​если вы создадите hystrix-dashboard из последнего исходного кода или используете самый последний выпущенный war (версия 1.4.3 от 27 марта на момент написания) .

person Cian    schedule 02.04.2015

Несколько вещей, вероятно, могут привести к MaxConcurrentConnections, и одна из них — отсутствие каких-либо данных метрик, сгенерированных приложением. Сервлеты (сервлеты Hystrix.stream) будут продолжать зацикливаться на ожидании данных, а затем потреблять все соединения. На вики Hystrix github есть очень хорошие обсуждения. Например: hystrix.stream удерживает соединение открытым, если нет показателей #85

person Hongbo Tian    schedule 17.03.2016