Jvm занимает много времени, чтобы решить ip-адрес для localhost
Кажется, у меня проблема с производительностью "sbt test" после перехода на macOS Sierra. На предыдущей версии OS X прошло около 40-50 секунд. macOS Сьерра время намного выше. Последний прогон, который я сделал, составлял около 15 минут. Время компиляции примерно такое же, как у "El Capitan".
Я только один из своей команды, чтобы попробовать этот новый macOS, поэтому я не могу сказать, происходит ли это только на моем mac или это универсальная проблема.
У моего коллеги была аналогичная проблема с Ubuntu, и это было связано со случайным числом, замедляющим тесты - Медленный ответ службы Times: Java SecureRandom и /dev/random
К сожалению, это не сработало для меня. Первоначально я попробовал это на JDK 8u54, а затем попытался обновить JDK 8u102, и это тоже не помогло.
P.S. Я запускаю Macbook Pro Mid-2015 2.8GHz i7, 16GB RAM, 1TB SSD.
Ответы
Ответ 1
У меня была та же проблема. Tomcat отправился с 15 секунд до 6 минут, чтобы инициализировать контекст spring после обновления... отключение csrutils не решило проблему для меня.
Я решил проблему, добавив мое имя компьютера Mac (например, Macbook.local или любой другой, который вызывается 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, чтобы помочь устранить проблему и проверить решение.
Проблема связана (я полагаю) о том, как работает разрешение имени локального хоста и как класс java.net.InetAddr извлекает адреса. Я проверил несколько коллег и, по-видимому, это не случилось со всеми, кто перешел в Сьерра, но я все еще изучаю корни этого изменения.
Решение в любом случае было таким же, как и antid0te.
Ответ 2
Правильный ответ: 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
Ответ 3
У меня та же проблема. Мое приложение spring -boot займет 60 секунд, чтобы начать с Sierra против 25 секунд на Yosemite.
Во время отладки я понял, что проблема исходит от InetAddress.getLocalHost().
Я изменил свой файл хоста, чтобы добавить мое имя для 127.0.0.1 и:: 1, и теперь приложение запускается так же быстро, как раньше.
Ответ 4
Включение, например. Системные настройки > Совместное использование > Удаленный вход, приводит к тому, что имя узла автоматически назначается IP-адресом.
Как люди видят проблемы после обновления, имеет смысл предположить, что 10.12 изменило способ определения имени хоста, то есть по крайней мере с 10.11 имя хоста всегда разрешено, а с 10.12 оно разрешено, только если служба включена в Системные настройки > Обмен (кто-то с 10.11 может подтвердить это).
Ответ 5
Я думаю, что это общая проблема с новой ОС. У меня есть аналогичная проблема: у меня есть веб-приложение, которое развертывается в tomcat. На El Capitan он запустился за 10 секунд, теперь он занимает 95 секунд, и клиент (настольное приложение на основе Swing) не может подключиться к нему (или, по крайней мере, потребовалось много времени). Я думаю, что это что-то вроде сетевой коммуникации, потому что простое тестовое консольное приложение работает хорошо.
Ответ 6
Это была странная проблема после установки обновления на 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
в любом месте терминала.
Ответ 7
Принятый ответ помог мне! Просто добавьте это здесь, объясняя, что я думаю, проблема для меня была:
Мое имя хоста было что-то вроде "Мой Mac", который не может быть решен. В настройках он показал мне, что к компьютеру можно обратиться с помощью mymac.local
Я подумал, что это место, и переименовал мой mac в "my.mac", но даже это не помогло, так как автоматически добавленный dns по-прежнему был mymac.local
Помогло добавление my.mac в /etc/hosts.
Итак, я думаю, что на самом деле проблема: это происходит только тогда, когда имя вашего компьютера содержит что-то, что не является буквой. Это автоматически удаляется ОС, а затем имя хоста и запись DNS не совпадают. (что можно исправить, добавив его вручную)
Ответ 8
Я столкнулся с той же проблемой на моем Mac.
Когда я изменил свои основные и Bonjour имена хостов, чтобы они содержали только буквенно-цифровые символы и точки, это решило проблему. Идея пришла от коллеги, который где-то читал этот совет, когда сталкивался с подобной проблемой (он не мог вспомнить, где).
Вдохновившись этим руководством, я следовал следующим шагам:
Сначала измените основное имя хоста
sudo scutil --set HostName <new host name>
например:
sudo scutil --set HostName eggsandwich
Затем измените имя хоста Bonjour (для полноты я никогда не пробовал без этого шага, так что он может быть не нужен).
sudo scutil --set LocalHostName <new host name>
например:
sudo scutil --set LocalHostName eggsandwich.local
Теперь перезапустите процессы Java, с которыми у вас были проблемы, и, надеюсь, они больше не должны зависать.
Кстати, это также решило еще одну проблему, с которой я столкнулся, когда новая вкладка в терминале не запускала bash в том же каталоге, несмотря на мои предпочтения. У меня нет объяснения, почему это произошло, но я очень доволен.
Ответ 9
Это может быть из-за некоторых ошибок в способе создания Mac OS Sierra. Попробуйте выполнить так называемый SMC reset или PRAM reset, чтобы узнать, исправит ли он ваш Mac. Это сбрасывание программного обеспечения и не повредит вашим пользовательским данным. Они могут потребовать от вас только reset системного времени после перезапуска.
Но они потенциально могут решить ваши проблемы. Вы также можете ознакомиться с некоторыми из приведенных здесь советов, касающихся устранения неполадок Mac OS Sierra - http://elcapitanslow.com/mac-os-sierra-slow-what-to-do/