1. ホーム
  2. java

[解決済み] JvmがlocalhostのIPアドレスを解決するのに時間がかかる

2022-08-19 13:36:59

質問

macOS Sierra にアップグレードした後、"sbt test" (localhost 名/IP アドレスの検索を含む) のパフォーマンスに問題があるようです。以前のバージョンのOS Xでは、約40~50秒で終了しましたが、macOS Sierraの時間はそれよりもはるかに長くなっています。最後に行った実行は15分程度でした。コンパイル時間は「El Capitan」のときとほぼ同じです。

私のチームからこの新しい macOS を試したのは私だけなので、私の mac でのみ起きているのか、それとも普遍的な問題なのかはわかりません。

私の同僚は Ubuntu で同様の問題を抱えており、それは乱数生成がテストを遅くしていることと関連していました。 サービスの応答時間が遅い : Java SecureRandom & /dev/random

残念ながら、それは私のために動作しませんでした。もともと私は JDK 8u54 でそれを試し、その後 JDK 8u102 に更新してみましたが、それも同様に役に立ちませんでした。

P.S. 私は Macbook Pro Mid-2015 2.8GHz i7、16GB ram、1TB SSD を使用しています。

どのように解決するのですか?

私も同じ問題がありました。Tomcat はアップグレード後に Spring コンテキストを初期化するのに15秒から6分になりました... csrutils を無効にしても、私の場合は問題が解決されませんでした。

I を解決しました。 に私の 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 プロジェクト にもリンクし、問題のトラブルシューティングと解決策の検証を支援します。

この問題は、localhost の名前解決の仕組みと java.net.InetAddr クラスがアドレスを取得する方法に関連しています (私はそう信じています)。何人かの同僚に確認したところ、どうやら Sierra にアップグレードしたすべての人に起こるわけではないらしいのですが、この変更のルーツをまだ調査しているところです。

とにかく解決策は antid0te が実装され、すぐに機能しました。