Jvm को लोकलहोस्ट के लिए आईपी-एड्रेस को हल करने में लंबा समय लगता है


112

मुझे मैकबुक सिएरा में अपग्रेड करने के बाद "sbt टेस्ट" (जिसमें लोकलहोस्ट नाम / आईपी एड्रेस दिखना शामिल है) के प्रदर्शन में समस्या है। OS X के पिछले संस्करण में इसे समाप्त होने में लगभग 40-50 सेकंड का समय लगा। macOS सिएरा का समय इससे बहुत अधिक है। अंतिम रन मैंने लगभग 15 मिनट किया था। संकलित समय 'एल कैपिटन' के समान है।

मैं इस नए macOS की कोशिश करने के लिए अपनी टीम से केवल एक ही हूं इसलिए मैं यह नहीं बता सकता कि यह केवल मेरे मैक पर हो रहा है या यह एक सार्वभौमिक मुद्दा है।

मेरे सहयोगी के पास उबंटू पर एक समान मुद्दा था और यह यादृच्छिक संख्या पीढ़ी के परीक्षणों को धीमा करने के साथ संबंधित था - धीमी सेवा प्रतिक्रिया टाइम्स: जावा सिक्योरग्रैंडम और / देव / यादृच्छिक

दुर्भाग्य से, यह मेरे लिए काम नहीं किया। मूल रूप से मैंने JDK 8u54 पर कोशिश की और फिर JDK 8u102 में अपडेट करने की कोशिश की और इससे भी मदद नहीं मिली।

PS मैं मैकबुक प्रो मिड-2015 2.8GHz i7, 16GB ram, 1TB SSD चला रहा हूं।


मैं gradle clean testएक ही मुद्दे का उपयोग कर रहा हूं ।
मैक्स पेंग

यह बग OpenJDK को सूचित किया गया है : bugs.openjdk.java.net/browse/JDK-8143378 इसे किसी अन्य बग के डुप्लिकेट के रूप में हल किया गया है जिसे ठीक नहीं किया जाएगा। इसे शायद फिर से खोलना चाहिए।
लॉरेंट पिंटर

जवाबों:


326

मुझे भी यही समस्या थी। उन्नयन के बाद स्प्रिंग संदर्भ को शुरू करने के लिए टॉमकैट को 15 सेकंड से 6 मिनट तक चला गया ... अक्षम करने के लिए csrutils ने मेरे लिए समस्या हल नहीं की।

मैंने अपने मैक होस्टनाम (यानी मैकबुक.लोक, या आपके मैक को जो भी कहा जाता है) को जोड़कर फ़ाइल को पते पर मैप किया और साथ ही इस तरह हल किया :/etc/hosts127.0.0.1::1

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

यदि आप रुचि रखते हैं तो आप इस मुद्दे और समाधान पर कुछ विवरण पा सकते हैं: https://thoeni.io/post/macos-sierra-java/

पोस्ट पर मैं समस्या को हल करने और समाधान को मान्य करने में मदद करने के लिए एक गीथब प्रोजेक्ट से भी जुड़ता हूं ।

समस्या संबंधित है (मुझे विश्वास है) कि लोकलहोस्ट नाम रिज़ॉल्यूशन कैसे काम करता है और java.net.InetAddr वर्ग पतों को कैसे प्राप्त कर रहा है। मैंने कुछ सहयोगियों के साथ सत्यापन किया और जाहिर तौर पर यह हर किसी के लिए नहीं है जो सिएरा में अपग्रेड हुआ है, लेकिन मैं अभी भी इस बदलाव की जड़ों की जांच कर रहा हूं।

वैसे भी समाधान वही था जो antid0te ने लागू किया और तुरंत काम किया।


एक ही मुद्दा ... और मैं इस बात की पुष्टि कर सकता हूं कि एसआईपी को निष्क्रिय करना मेरे लिए भी कारगर नहीं था।
बोरस

ग्रेट यह काम करता है, तो आप GitHub परियोजना के साथ की जाँच कर सकते github.com/thoeni/inetTester
christmo

21
मिल गया! इसका मैक नाम नहीं .. इसका होस्टनाम। टर्मिनल में "hostname" टाइप करके सही hostname दे सकते हैं।
VK321 6

1
अभी भी इसे OSX 10.14.2 पर देख रहे हैं, वर्षों बाद। फिक्स के लिए बहुत बहुत धन्यवाद।
मैल्कम क्रुम

1
MacOS Mojave 10.14.4, अभी भी एक समस्या है। localhostIPv4 और IPv6 लूपबैक लाइनों ( 127.0.0.1, ::1) के बाद भी होस्टनाम लागू करना अभी भी सत्यापित है!
डॉग

43

सही जवाब: Jvm को लोकलहोस्ट के लिए आईपी-एड्रेस को हल करने में लंबा समय लगता है

आलसी लोगों के लिए:

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

4
बहुत बढ़िया! इसने मेरे मिनीक्राफ्ट लॉन्चिंग के समय को 12 सेकंड से 0.5 सेकंड तक बढ़ाया।
बॉब

@camikiller मैं hostname बनाम Sharing> Computer Name के लिए 2 अलग-अलग मान देख रहा हूं, कृपया स्पष्ट करें कि किसका उपयोग करना है?
विक्रमवी

बेहतर उपाय यह है कि अपने MacOS @vikramvi को अपग्रेड करें
Camikiller

@camikiller बाद में मैंने प्रति Apple.stackexchange.com/questions/66611/… , का वही नाम रखा, लेकिन अभी भी यह काम नहीं कर रहा है। क्या मुझे शेयरिंग में कुछ अन्य सेटिंग्स करने की आवश्यकता है?
विक्रमवी

@vikramvi अपनी /etc/hostsफ़ाइल को मैन्युअल रूप से संपादित करने का प्रयास करें और
कैमिकिलर

6

मेरी भी यही समस्या है। मेरी स्प्रिंग-बूट एप्लिकेशन को सिएरा से योसेमाइट पर 25 सेकंड के लिए शुरू होने में 60 सेकंड लगते हैं।

डीबग करते समय, मुझे एहसास हुआ कि समस्या InetAddress.getLocalHost () से आती है। मैंने अपने होस्टनाम को 127.0.0.1 और :: 1 के लिए अपने होस्टनाम को जोड़ने के लिए बदल दिया है और अब आवेदन पहले की तरह तेजी से शुरू होता है।


2
नमस्ते, मुझे यह उच्च स्तरीय स्पष्टीकरण मिला अगर यह मदद करता है (लेकिन अभी भी यह स्पष्ट नहीं है कि मैकओएस सिएरा रिलीज़ में क्या बदल गया है): "जब आप एक होस्टनाम का अनुरोध करते हैं, तो जेडीके इसे आईपी पते पर हल करता है। यह फिर उन पतों की रिवर्स लुकअप की कोशिश करता है। और जांचता है कि कम से कम एक परिणाम इनपुट होस्ट नाम पर वापस मैप करता है। यह रिवर्स लुकअप है जो धीमा है। धीमेपन जेवीएम तक सीमित नहीं है। ओएस पर कुछ भी जो इस तरह के रिवर्स लुकअप को करने की कोशिश करता है, बिना धीमा होगा। / etc / मेजबान में उपयुक्त कॉन्फ़िगरेशन। " ( github.com/spring-projects/spring-boot/issues/7087 से )
thoeni

3

सिस्टम वरीयताएँ सक्षम करना> साझा करना> दूरस्थ लॉगिन, होस्टनाम में परिणाम स्वचालित रूप से एक आईपी पता सौंपा जा रहा है।

जैसा कि लोग उन्नयन के बाद मुद्दों को देख रहे हैं, यह समझ में आता है कि 10.12 ने होस्टनाम को हल करने के तरीके को बदल दिया है, अर्थात कम से कम 10.11 के साथ होस्टनाम हमेशा हल किया जाता है, जबकि 10.12 के साथ यह केवल तभी हल किया जाता है जब कोई सेवा सिस्टम वरीयताएँ में सक्षम हो> साझा करना (10.11 वाला कोई व्यक्ति इसकी पुष्टि कर सकता है)।


मेरे पास 10.12.5 है, लेकिन आपका समाधान काम नहीं आया। आपके पास कौन सा संस्करण है?
विक्रमवी

@vikramvi मेरे पास 10.12.6 है और मेरी स्थापना के लिए अभी भी वर्णित के रूप में काम करती है। एक मानक / आदि / होस्ट फ़ाइल और साझाकरण अक्षम के साथ, पिंग $ (होस्टनाम) एक अज्ञात होस्ट त्रुटि के साथ विफल हो जाता है। साझाकरण सक्षम होने के साथ होस्ट का नाम मेरे वीएलएएन के आईपी से हल हो गया है। जावा (8u141) के लिए, InetAddress.getLocalHost () को कॉल करने से अक्षमता साझा करने के मामले में 5s लगते हैं। साझाकरण के साथ निष्पादन का समय 13ms तक चला जाता है।
जुराजव

यह काम करता है (हालांकि वास्तव में अजीब है), मूल रूप से भले ही "रिमोट लॉगिन" पहले से ही चेक किया गया था, इसे अनचेक करें, फिर इसे फिर से जांचें। चीजें फिर से काम करने लगती हैं। आपको इसे एक बार / बूट LOL करना होगा। यह भी ध्यान दें कि यदि आपने कभी "mDNS" प्रक्रिया (पहले) को मार दिया है, तो आपको सभी से .local पते लाने के लिए यह ट्रिक करने की आवश्यकता होगी। या एक अधिक स्थायी फिक्स के लिए / etc / मेजबानों के रास्ते का उपयोग करें
rogerdpack

1

मुझे लगता है कि नए ओएस के साथ यह एक सामान्य समस्या है। मेरे पास एक समान समस्या है: मेरे पास एक वेब एप्लिकेशन है जो टॉमकैट पर तैनात है। El Capitan पर यह 10 सेकंड में शुरू हुआ, अब इसे 95 सेकंड लगते हैं और क्लाइंट (एक स्विंग आधारित डेस्कटॉप ऐप) इसे कनेक्ट नहीं कर सकता है (या कम से कम इसमें बहुत समय लगा)। मुझे लगता है कि यह नेटवर्क संचार के आसपास कुछ है, क्योंकि एक साधारण परीक्षण कंसोल ऐप अच्छी तरह से चलता है।


1
एसआईपी बंद करने से मेरी समस्या हल हो गई। macossierra-slow.com/…
एन्ड्रास ग्यात्वन

1

अद्यतन स्थापित करने के बाद यह एक अजीब समस्या थी Mac Sierra 10.12 (16A323)। नीचे के साथ मेजबानों में इस मुद्दे को हल किया।

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

आप टर्मिनल में कहीं भी कमांड द्वारा myhostname प्राप्त कर सकते हैं $hostname


0

स्वीकृत उत्तर ने मेरी मदद की! इसे यहाँ जोड़कर समझाता हूँ कि मेरे लिए क्या समस्या थी:

मेरा Hostname "My Mac" जैसा कुछ था जिसे हल नहीं किया जा सका। सेटिंग्स में यह पता चला कि कंप्यूटर को mymac.local के साथ संबोधित किया जा सकता है

मैंने सोचा था कि यह स्थान था और मेरे मैक का नाम बदलकर "my.mac" कर दिया गया था, लेकिन इससे भी मदद नहीं मिली क्योंकि स्वचालित रूप से जोड़ा गया dnac अभी भी mymac.local था

My.mac को / etc / मेजबान में जोड़ने से तब मदद मिली।

इसलिए मेरा अनुमान है कि वास्तविक मुद्दा क्या है: यह केवल तब होता है जब आपके कंप्यूटर के नाम में कुछ भी होता है जो एक पत्र नहीं है। यह ओएस द्वारा स्वचालित रूप से हटा दिया जाता है और फिर hostname और dns प्रविष्टि मेल नहीं खाती। (जो मेरे हाथ से इसे तय किया जा सकता है)


1
मुझे लगता है कि यह मुद्दा इससे कहीं ज्यादा गहरा है ... मेरा होस्टनाम सभी सामान्य अल्फा अक्षर थे, फिर भी इसे / etc / मेजबानों में जोड़कर मेरे लिए कई अजीब मुद्दों को हल किया
Magnus

0

मैंने अपने मैक पर उसी मुद्दे का अनुभव किया।

जब मैंने अपने प्राथमिक और बोनजोर होस्टनाम को केवल अल्फ़ान्यूमेरिक वर्णों में बदल दिया, तो इसने इस मुद्दे को हल कर दिया। यह विचार एक ऐसे सहकर्मी से आया था जिसने कहीं न कहीं सलाह को पढ़ा था जब वह इसी तरह की समस्या का सामना कर रहा था (वह याद नहीं कर सकता था)।

इस गाइड से प्रेरणा लेते हुए ये मेरे द्वारा उठाए गए कदम थे:

सबसे पहले, प्राथमिक होस्टनाम बदलें

sudo scutil --set HostName <new host name>

उदाहरण के लिए:

sudo scutil --set HostName eggsandwich

अगला, बोंजोर होस्टनाम बदलें (पूर्णता के लिए, मैंने कभी इस कदम के बिना कोशिश नहीं की, इसलिए इसकी आवश्यकता नहीं हो सकती है)।

sudo scutil --set LocalHostName <new host name>

उदाहरण के लिए:

sudo scutil --set LocalHostName eggsandwich

अब उन जावा प्रक्रियाओं को फिर से शुरू करें जिनके साथ आप समस्या कर रहे थे, और उम्मीद है कि उन्हें अब लटकना नहीं चाहिए।

एक ओर ध्यान देने पर, यह मेरे पास एक अन्य समस्या भी हल कर देता है जहां टर्मिनल में एक नया टैब मेरी प्राथमिकताओं के बावजूद उसी निर्देशिका में बैश शुरू नहीं करेगा। ऐसा क्यों हुआ, इसके लिए मेरे पास कोई स्पष्टीकरण नहीं है, लेकिन मैं बहुत प्रसन्न हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.