Java e /etc/resolv.conf failover do servidor DNS

3

Resumo executivo

  • O Java consulta a próxima entrada do servidor de nomes resolv.conf se o primeiro falhar ou expirar?
  • Qual é o tempo limite padrão no qual o Java considerará um resolvedor "inativo"?

Detalhes

No /etc/resolv.conf, na maioria dos sites, existem vários servidores DNS configurados para uso pelo sistema. Alguém pode esclarecer o que acontece, com Java, se o primeiro servidor DNS na lista falhar? Por exemplo, imagine o seguinte resolv.conf

search example.com nameserver 8.8.8.8 nameserver 4.4.4.4

Se 8.8.8.8 se tornar inacessível, o Java tentará 4.4.4.4? Em nossa experiência, não - vimos muitos segmentos aguardando para resolver nomes DNS, mesmo que os servidores DNS de backup estivessem acessíveis.

    
por Fred Clausen 25.02.2014 / 05:50

2 respostas

3

No Linux, o java delegará a resolução do nome do host à biblioteca do sistema C subjacente que faz a resolução real.

Os servidores de nomes serão consultados na ordem listada como especificado em /etc/resolv.conf depois que as outras fontes de informação especificadas em /etc/nsswitch.conf tiverem sido consultadas (pense em / etc / hosts, mas possivelmente em NIS ou LDAP ).

Você pode especificar um valor de tempo limite em /etc/resolv.conf, de acordo com a página man, o padrão é 5 segundos.

Se o seu primeiro servidor fornecer um código de erro válido, por exemplo, servfail o segundo servidor de nomes não será consultado

    
por 25.02.2014 / 08:11
0

Qualquer programa lê todo o conteúdo de /etc/resolv.conf somente quando primeiro pergunta ao DNS e, em seguida, nunca atualiza , mesmo quando encontra uma falha total no DNS. O programa precisaria ter algumas chamadas específicas do sistema programadas para se comportarem de maneira mais amigável. Esta pergunta SO explica os detalhes.

Suspeito que você tenha editado /etc/resolv.conf enquanto a JVM estava em execução. Reinicie.

    
por 15.03.2018 / 12:41