2013-10-02 5 views
5

मैंने अमेज़ॅन ईसी 2 इंस्टेंस पर चल रही सेवाओं में से एक पर जेएमएक्स स्थापित किया लेकिन यह ठीक से काम नहीं करता है। मैं कनेक्ट करने के लिए VisualVM का उपयोग कर रहा हूं और लंबित की छोटी अवधि के बाद यह टाइमआउट के साथ विफल रहता है। ऐसा लगता है कि यह अनुपलब्ध प्रतिक्रिया डेटा या झटके के कारण विफल रहता है। मैंने जांच की है कि सुरक्षा समूह में जेएमएक्स पोर्ट सक्षम है और किसी भी जेएमएक्स सक्षम के साथ अलग-अलग बंदरगाह के साथ भी प्रयास किया गया है और सुरक्षा समूह सेटिंग्स में बंदरगाह सक्षम नहीं है और दोनों तुरंत विफल हो जाते हैं, इसलिए यह अलग दिखता है। मेरे ईसी 2 इंस्टेंस और डेस्कटॉप दोनों में उबंटू 12.04 और जेडीके 7 स्थापित है।अमेज़ॅन ईसी 2 के लिए जेएमएक्स कनेक्शन क्यों विफल रहता है?

यह बंदरगाहों को समझ में नहीं आता है क्योंकि कनेक्शन एसएसएल सुरक्षित है। मेरे पास एक निजी कुंजी है और उसे पता नहीं है कि JConsole या VisualVM के साथ इसका उपयोग कैसे करें।

+0

संभावित डुप्लिकेट [जेएमएक्स का उपयोग कर ईसी 2 पर चल रहे जावा इंस्टेंस से कैसे कनेक्ट करें] (http://stackoverflow.com/questions/13734646/how-to-connect-to-java-instances-running-on-ec2- उपयोग-जेएमएक्स) – Gray

उत्तर

3

यह मेरे लिए काम करता है। आपके सर्वर पर JMX विकल्प सेट करें:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=<some port> 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=localhost 

एक SSH सुरंग खोलें:

ssh -i /path/to/key -D <some port> [email protected]_dns_address 

प्रारंभ VisualVM:

jvisualvm -J-Dnetbeans.system_socks_proxy=localhost:<some port> -J-Djava.net.useSystemProxies=true 

सर्वर से एक दूरस्थ कनेक्शन जोड़ें। JMX के लिए निर्दिष्ट पोर्ट का उपयोग करके एक जेएमएक्स कनेक्शन जोड़ें।

स्पष्ट होने के लिए, ऊपर दिए गए सभी तीन मामलों में, एक ही बंदरगाह होना चाहिए।

+0

मैंने कोशिश नहीं की है, लेकिन जहां तक ​​मैं समझता हूं कि यह स्थानीय प्रॉक्सी के रूप में एसएसएच का उपयोग करता है। मेरे पास 8 अलग-अलग ईसी 2 उदाहरण हैं और इसका मतलब है कि मुझे 8 अलग-अलग VisualVMs चलाने की आवश्यकता होगी? –

+1

यह सही है। मैंने इस स्थिति में जो किया है, वह उन एमबीन के बारे में विवरण प्राप्त करने के लिए एक VisualVM खोलना है, जिन्हें मैं देखना चाहता हूं और फिर प्रत्येक मशीन से उन्हें स्थानीय रूप से प्राप्त करने के लिए एक स्क्रिप्ट लिखना चाहता हूं। विशेष रूप से, मैं जेआरबीई स्थापित करता हूं और स्थानीय मशीन पर जेएमएक्स से पूछताछ करने के लिए जेएमएक्स मणि का उपयोग करता हूं और परिणामों को कंसोल पर प्रिंट करता हूं, या उन्हें संग्रह के लिए रिमोट सिस्टम पर भेजता हूं। यह उन सिस्टम पर थोड़ा सा भार बनाता है जहां स्क्रिप्ट चल रही है, इसलिए आपको उस पर विचार करना होगा। – Peter

+0

यह मेरे लिए काम करता है! आपका बहुत बहुत धन्यवाद। –

10

जेएमएक्स को एक खुले बंदरगाह पर चल रही एक आरएमआई रजिस्ट्री की आवश्यकता है। डिफ़ॉल्ट रूप से आरएमआई रजिस्ट्री पोर्ट स्टार्टअप समय पर यादृच्छिक रूप से चुना जाता है और यह फ़ायरवॉल के साथ अच्छी तरह से नहीं खेलता है। JDK7u4 जब से तुम

-Dcom.sun.management.jmxremote.rmi.port=<port> 

RMI बंदरगाह इस्तेमाल किया जा करने के लिए सेट करने के लिए उपयोग कर सकते हैं। फिर आप उस समूह को सुरक्षा समूह में सक्षम कर सकते हैं।

उपरोक्त सेटिंग के .rmi. भाग पर ध्यान दें क्योंकि यह आमतौर पर com.sun.management.jmxremote.port सेटिंग से भ्रमित हो जाता है। आपको नहीं होना चाहिए!

+0

मैं बंदरगाहों को समझ में नहीं आता क्योंकि कनेक्शन एसएसएल सुरक्षित है। मेरे पास एक निजी कुंजी है और उसे पता नहीं है कि जेकोनसोल या विजुअलVM –

+0

के साथ इसका उपयोग कैसे किया जाए यह स्वीकार्य सर्वोत्तम उत्तर होना चाहिए, क्योंकि इसे एसएसएच सुरंग की आवश्यकता नहीं है या पूरे पोर्ट रेंज को 0-65535 से खोलना है (जैसा कि मैंने सुझाव दिया था कहीं और)। – mmindenhall

संबंधित मुद्दे