resolv.conf
запись сервера имен, если первая выходит из строя или истекает время ожидания?В /etc/resolv.conf
, на большинстве сайтов есть несколько DNS-серверов, настроенных для использования системой. Может ли кто-нибудь прояснить, что происходит с Java, если первый DNS-сервер в списке выходит из строя? Например, представьте себе следующее resolv.conf
:
nameserver 8.8.8.8
nameserver 4.4.4.4
Если 8.8.8.8 станет недоступным, попробует ли Java 4.4.4.4? По нашему опыту, это не так - мы видели много потоков, ожидающих разрешения DNS-имен, даже если резервные DNS-серверы были доступны.
В Linux java делегирует разрешение имени хоста базовой системной библиотеке C, которая выполняет фактическое разрешение.
Серверы имен будут опрошены в порядке, указанном в /etc/resolv.conf, после того, как будут опрошены другие источники информации, указанные в /etc/nsswitch.conf (например, / etc / hosts, но, возможно, NIS или LDAP).
Вы можете указать значение тайм-аута в /etc/resolv.conf, согласно справочной странице, значение по умолчанию составляет 5 секунд.
Если ваш первый сервер выдает допустимый код ошибки, т.е. servfail второй сервер имен не будет опрашиваться
Как программа (любой процесс, включая JVM) имеет свой самый первый запрос DNS, который она читает и кеширует навсегда все содержание /etc/resolv.conf
по умолчанию. Это никогда не освежает эта информация позже, даже когда он обнаруживает полный отказ DNS. Программа должна иметь некоторые специальные системные вызовы, запрограммированные для более удобного поведения. Этот ТАК вопрос объясняет детали.
Я подозреваю, что вы редактировали /etc/resolv.conf
пока работала JVM. Перезагрузите его.