Jvm занимает много времени для разрешения ip-адреса для localhost


кажется, у меня проблема с производительностью "sbt test" после обновления до macOS Sierra. На предыдущей версии OS X потребовалось около 40-50 секунд, чтобы закончить. macOS Sierra раз гораздо выше, чем это. Последний раз я пробежал около 15 минут. Время компиляции примерно такое же, как на 'El Capitan'.

Я единственный из моей команды, чтобы попробовать этот новый macOS, поэтому я не могу сказать, происходит ли это только на моем mac или это универсальная проблема.

У моего коллеги был похожий проблема на Ubuntu, и это было связано с генерацией случайных чисел, замедляющих тесты -медленное время отклика службы: Java SecureRandom & / dev / random

к сожалению, это не сработало для меня. Первоначально я попробовал это на JDK 8u54, а затем попытался обновить до JDK 8u102, и это тоже не помогло.

P. S. Я работает Макбук Про середины 2015 года с i7 2.8 ГГц, 16GB ОЗУ, SSD емкостью до 1ТБ.

8 76

8 ответов:

у меня была та же проблема. Tomcat пошел от 15 секунд до 6 минут, чтобы инициализировать весенний контекст После обновления... отключение csrutils не решило проблему для меня.

Я решить проблема, добавив мое имя хоста Mac (т. е. Macbook.локальный, или как там называется Ваш Mac) на /etc/hosts файл сопоставлен с 127.0.0.1 адрес, а также ::1 такой:

127.0.0.1   localhost mbpro.local
::1         localhost mbpro.local

если вы заинтересованы, то вы можете найти некоторые детали на вопросе и решении здесь: https://thoeni.io/post/macos-sierra-java/

на посту я также ссылаюсь на проект github чтобы помочь устранить проблему и проверить решение.

проблема связана (я считаю) с тем, как работает разрешение имен localhost и как класс java.net.InetAddr извлекает адреса. Я проверил с несколькими коллегами, и, по-видимому, это происходит не со всеми, кто перешел на Sierra, но я все еще расследую корни этого изменения.

решение в любом случае было то же самое, что antid0te реализовано и работает сразу.

правильный ответ: Jvm занимает много времени, чтобы решить ip-адрес для localhost

для ленивых людей:

sudo sed -i bak "s^127\.0\.0\.1.*^127.0.0.1 localhost $(hostname)^g" /etc/hosts
sudo sed -i bak "s^::1.*^::1 localhost $(hostname)^g" /etc/hosts
sudo ifconfig en0 down
sudo ifconfig en0 up

У меня та же проблема. Мое приложение spring-boot занимает 60 секунд для запуска на Sierra против 25 секунд на Yosemite.

во время отладки, я понял, что проблема исходит от InetAddress.getLocalHost(). Я изменил свой файл хоста, чтобы добавить свое имя хоста для 127.0.0.1 и :: 1, и теперь приложение запускается так же быстро, как и раньше.

включение, например, системных настроек > общий доступ > удаленный вход, приводит к тому, что имя хоста автоматически назначается IP-адрес.

поскольку люди видят проблемы после обновления, имеет смысл предположить, что 10.12 изменил способ разрешения имени хоста, т. е. по крайней мере с 10.11 имя хоста всегда разрешается, а с 10.12 оно разрешается только в том случае, если служба включена в Системных настройках > общий доступ (кто-то с 10.11 может подтвердить это).

Я думаю, что это общая проблема с новой ОС. У меня есть аналогичная проблема: у меня есть веб-приложение, которое развернуто в tomcat. На El Capitan он запустился за 10 секунд, теперь он занимает 95 секунд, и клиент (настольное приложение на основе Swing) не может подключиться к нему (или, по крайней мере, это заняло много времени). Я думаю, что это что-то вокруг сетевого общения, потому что простое приложение для тестирования консоли работает хорошо.

Это была странная проблема после установки обновления до Mac Sierra 10.12 (16A323). В файле hosts с приведенной ниже сортировкой вопроса.

::1         localhost <myhostname>.local   <--- Was already present
127.0.0.1   localhost <myhostname>.local   <--- Solved the tomcat loading issue

вы можете узнать myhostname команда $hostname в любом месте в терминале.

принятый ответ помог мне! Просто добавив Это здесь, объясняя, что я думаю, что проблема для меня была:

мое имя хоста было чем-то вроде "мой Mac", который не мог быть решен. В настройках он показал мне, что компьютер может быть рассмотрен с mymac.местные

Я думал, что это было пространство и переименовал мой mac в " мой.mac " но даже это не помогло, так как автоматически добавленный dns все еще был mymac.местные

добавить свое.mac для/etc / hosts помог тогда.

Так что я думаю, что фактическая проблема: это происходит только тогда, когда имя Вашего компьютера содержит все, что не является буквой. Это автоматически удаляется ОС, а затем имя хоста и запись dns не совпадают. (который может быть исправлен мой вручную добавив его)

Это может быть из-за некоторых ошибок в том, как была настроена Mac OS Sierra. Попробуйте сделать то, что называется сбросом SMC или сбросом PRAM, чтобы узнать, исправит ли он ваш Mac. Это сброс программного обеспечения и не повредит вашим пользовательским данным. Они могут потребовать от вас просто сбросить системное время после перезагрузки.

но они потенциально могут решить ваши проблемы. Вы также можете посмотреть на некоторые из советов, упомянутых об устранении неполадок Mac OS Sierra здесь - http://elcapitanslow.com/mac-os-sierra-slow-what-to-do/