1
resposta

Mensagem de alerta no servidor Eureka

Ao executar o Eureka server na porta 8081, às vezes é exibida uma mensagem de alerta em vermelho com o seguinte conteúdo "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".

A mensagem depois deixou de ser exibida, mas considero esse comportamento meio estranho.

Notei que essa mensagem também foi exibida no computador da instrutora em uma aula anterior.

Os senhores sabem o motivo desse alerta?

Obrigado.

1 resposta

Olá Hamilton,

Essa mensagem significa que o Eureka pode estar mostrando instâncias cujos serviços não estejam mais em execução. Isso ocorre porque o Eureka não cancela o registro da instância se os serviços forem interrompidos abruptamente.

Durante a inicialização, os clientes (ou serviços) fazem uma chamada ao servidor Eureka para se auto registrar. Quando ocorre um desligamento normal após o uso, os clientes acionam outra chamada para que o servidor possa eliminar todos os dados relacionados ao cliente (chamador). Para lidar com desligamentos inesperados de alguma instância, o servidor espera heartbeats (pulsações) do cliente em intervalos específicos. Isso se chama taxa de renovação. Se o servidor parar de receber a pulsação por um período especificado, ele começará a "desalojar" as instâncias obsoletas.

O mecanismo que faz com que o Eureka não encerre as instâncias obsoletas é chamado de autopreservação (self-preservation), pois pode ser de fato apenas um problema de rede ou inatividade que cause a não identificação desses heartbeats pelo Eureka. Essa configuração já vem habilitada por padrão, mas há algumas modificações e outras configurações que podem ser incluídas no application.properties que influenciam/evitam que a mensagem seja exibida, como as abaixo:

  • eureka.server.enable-self-preservation: o valor padrão é true, mas pode ser passado para false
  • eureka.server.expected-client-renewal-interval-seconds: intervalo que o servidor espera os heartbeats do clientes. O valor padrão é 30
  • eureka.instance.lease-expiration-duration-in-seconds: tempo que Eureka espera desde o último heartbeat antes de considerar a instância obsoleta. Valor padrão é 90.
  • eureka.server.eviction-interval-timer-in-ms: Tempo para que o Eureka Server desaloje as instâncias. Padrão 60.
  • eureka.server.renewal-percent-threshold: Essa propriedade calcula a quantidade esperada de heartbeats por minuto para cada cliente registrado. O valor padrão é 0.85.
  • eureka.server.renewal-threshold-update-interval-ms: Essa propriedade indica ao Eureka para rodar um job para calcular novamente a quantidade de heartbeats esperados. Valor padrão é 15 minutos.

Se a dúvida permanecer, não deixe de nos informar por aqui.

Bons estudos! 😄

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!