Блок потока Vert.x EventLoop Inet6AddressImpl.lookupAllHostAddr

Я испытываю очень странный блок потока более 4 секунд при поиске записи DNS (?) При запуске производителя kafka, исключение:

2019-02-11 10:00:33,982 WARN [vertx-blocked-thread-checker] io.vertx.core.impl.BlockedThreadChecker - Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 4172 ms, time limit is 1000 ms
io.vertx.core.VertxException: Thread blocked
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1277)
    at java.net.InetAddress.getAllByName(InetAddress.java:1193)
    at java.net.InetAddress.getAllByName(InetAddress.java:1127)
    at java.net.InetAddress.getByName(InetAddress.java:1077)
    at java.net.InetSocketAddress.<init>(InetSocketAddress.java:220)
    at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:53)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:406)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:304)

Это происходит один раз (не каждый раз) Можно ли программно отключить поиск ipv6 в vertx? Как я могу сделать, чтобы эта ошибка исчезла?

Вы разрабатываете на OSX? Тогда вы, вероятно, попали в этот justthesam.com/2016/10/…

tsegismont 13.02.2019 11:00

С протоколом IPV6 вы не можете найти хост, поэтому у вас могут быть две проблемы. У вас плохой хост, но, как вы сказали, иногда он работает, проблема должна быть в вашем компьютере, поэтому проверьте его. Но если вы хотите отключить IPV6, эта конфигурация находится в конфигурации Java, поэтому запустите java с Djava.net.preferIPv4Stack=true

Lucas Milotich 14.02.2019 12:12

Нет, развертывание приложения на сервере Ubuntu 16.04 LTS

Tomer Lev 14.02.2019 13:36

@LucasMilotich Я пробовал этот флаг раньше - он создал для нас некоторые другие проблемы, может быть, есть другой способ программно в vert.x отключить только поиск адресов ipv6?

Tomer Lev 14.02.2019 14:00

Параметры веб-клиента Vertx наследуют параметры HTTP-клиента, поэтому вы можете установить любой из них, но я не уверен, что вы можете указать протокол ip. Попробуйте прочитать http java docs, чтобы узнать, есть ли какой-либо cfg в опциях http клиента http. Вы пытались отключить ipv6 с компьютера?

Lucas Milotich 14.02.2019 14:06
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
0
5
421
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После добавления флага "-Djava.net.preferIPv4Stack=true" проблема устранена, но были обнаружены некоторые другие проблемы с InetAddress.getLocalHost(), который возвращает localhost\127.0.0.1 для имени хоста\ip... чтобы решить эту проблему, мне пришлось отредактировать /etc/hosts на машинах, чтобы:

# This file is automatically generated by our bootstrap script.
<MACHINE_IP> <MACHINE_HOSTNAME>   # <-- Ordering ...
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
# ::1 ip6-localhost ip6-loopback <MACHINE_HOSTNAME>   <-- IPV6 must be disabled

после отключения всех разделов IPv6 из /etc/hosts правильное имя хоста и IP-адрес были разрешены, и моя программа запустилась правильно

Другие вопросы по теме