2016-02-03 1 views
0

Я тестирую сервер и клиент eureka с весенним облаком. У меня есть простой вопрос о конфигурации по умолчанию (сервер & клиент).Порог обновления и возобновление (последний мин)

На стороне сервера порог обновления равен 3. На стороне клиента он посылает пульс каждые 30 секунд (максимум 2 в минуту).

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

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE 

Когда я смотрю на код, тест getNumOfRenewsInLastMin() <= numberOfRenewsPerMinThreshold всегда верно (2 <= 3)

Почему конфигурация по умолчанию кажется странной, потому что она постоянно генерирует предупреждение!

Если есть кто-нибудь, кто может дать мне объяснение. Я думаю, что я пропустил что-то и hellip;

+0

Я вижу 'numberOfRenewsPerMinThreshold> 0 && getNumOfRenewsInLastMin()> numberOfRenewsPerMinThreshold'. который работает до '2> 3 = false'. Куда ты смотришь? https://github.com/Netflix/eureka/blob/a54991b8fe121bc39b2b1257b0c57f19ff0ccd30/eureka-core/src/main/java/com/netflix/eureka/registry/PeerAwareInstanceRegistryImpl.java#L465 – spencergibb

+0

Может ли быть проблема между методом isBelowRenewThresold() (это верно IMHO) и использование FTL <#if isBelowRenewThresold>. Может быть, FTL использует метод, который возвращает число, в котором ожидается логическое ожидание? –

+0

Извините, пожалуйста, проигнорируйте мой последний ответ. Кажется, он работает правильно. Моя консоль eureka показывает мне, что обновления (4) действительно ниже порога (5). Поскольку у меня есть 2 клиента, обновления обычно будут 4. Большие вопросы, почему порог больше ожидаемых обновлений? Это похоже на этот вопрос и здесь –

ответ

0

Вот некоторые подробности:

Вы можете найти тест, позволяющий отображать сообщение в этом файле ниже.

https://github.com/spring-cloud/spring-cloud-netflix/blob/master/spring-cloud-netflix-eureka-server/src/main/resources/templates/eureka/navbar.ftl

Значение "isBelowRenewThresold" происходит от кода ниже:

model.put ("isBelowRenewThresold", registry.isBelowRenewThresold() == 1);

Вызванный метод можно найти в следующем файле:

https://github.com/Netflix/eureka/blob/master/eureka-core/src/main/java/com/netflix/eureka/registry/PeerAwareInstanceRegistryImpl.java

Спасибо за вашу помощь.

С уважением, Stephane

1

У меня такая же проблема, и исследовал его немного. Основная причина для предупреждающего сообщения заключается в том, что обновления в точности на 1 ниже порога.

Это происходит, когда вы запускаете простой сервер eureka и не регистрируете никаких клиентов. Он получит 1 на пороге Renews. Когда вы регистрируете клиента, 2 из клиента просто добавляются в тот, который уже существует. Таким образом, создание порога Renews теперь 3, и это выше, чем обновления могут когда-либо возникать с одним клиентом. Подождите несколько минут (около 4 минут), и появится предупреждение.

Мой application.yml является:

spring: 
    application: 
    name: service-registry 
server: 
    port: 8761 
eureka: 
    instance: 
    hostname: localhost 
    client: 
    registerWithEureka: false 
    fetchRegistry: false 
    serviceUrl: 
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 

Я использую Brixton.RC1.

Найдено две другие вопросы SQ в одной и той же теме:

Understanding Spring Cloud Eureka Server self preservation and renew threshold

Spring Eureka server shows RENEWALS ARE LESSER THAN THE THRESHOLD