डाइग्नोस्टिक्स टूल और लॉग

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

इस विषय में नेटवर्क टूल, जेवीएम टूल, और डाइग्नोस्टिक लॉग के बारे में बताया गया है. इन लॉग का इस्तेमाल Apigee Edge पर नेटवर्क और JVM से जुड़ी समस्याओं को हल करने के लिए किया जा सकता है.

टीसीपी/आईपी पैकेट स्निफ़र (tcpdump) यूटिलिटी

tcpdump टूल एक कमांड-लाइन पैकेट स्निफ़र टूल है. इसकी मदद से, किसी नेटवर्क पर मिलने वाले या ट्रांसफ़र किए गए टीसीपी/आईपी पैकेट को कैप्चर या फ़िल्टर किया जा सकता है. यह Linux/Unix पर आधारित ऑपरेटिंग सिस्टम पर उपलब्ध है. yum का इस्तेमाल करके, इस सुविधा को इस तरह इंस्टॉल किया जा सकता है:

yum install tcpdump

tcpdump टूल, नेटवर्क या एसएसएल से जुड़ी समस्याओं को हल करने के लिए काम का है. उदाहरण के लिए:

  • 502 खराब गेटवे गड़बड़ियां (ईओएफ़ अपवाद की वजह से हुई)
  • 503 सेवा उपलब्ध न होने से जुड़ी गड़बड़ियां
  • SSL हैंडशेक विफलताएं

इनमें से किसी भी समस्या को हल करने के लिए, आपको सबसे पहले उन कॉम्पोनेंट के जोड़े का पता लगाना होगा जिनके बीच गड़बड़ी हुई. Edge के मामले में, यह इनमें से कोई एक पेयर हो सकता है:

  • क्लाइंट ऐप्लिकेशन और राऊटर
  • राऊटर और मैसेज प्रोसेसर
  • मैसेज प्रोसेसर और बैकएंड सर्वर

कॉम्पोनेंट के ऐसे जोड़े की पहचान कर लेने के बाद जिनसे परेशानी हो रही है, आपके पास इनमें से किसी एक या दोनों कॉम्पोनेंट पर tcpdump का इस्तेमाल करके, नेटवर्क पैकेट कैप्चर करने का विकल्प है.

tcpdump का इस्तेमाल करके, किसी होस्ट को भेजे गए या उससे मिले पैकेट कैप्चर करना

किसी खास होस्ट (आईपी पते) पर भेजे गए या उससे मिले सभी पैकेट को कैप्चर करने के लिए, नीचे दिए गए tcpdump कमांड का इस्तेमाल करें और जानकारी को तय की गई फ़ाइल में सेव करें:

tcpdump -i any -s 0 host <IP address> -w <File name>

जगह:

पैरामीटर Description
-i (इंटरफ़ेस) वह इंटरफ़ेस तय करता है जिससे पैकेट कैप्चर किए जाने चाहिए. “किसी भी” वैल्यू का इस्तेमाल करने पर, सभी इंटरफ़ेस से पैकेट कैप्चर किए जा सकते हैं.
-सेकंड (snaf/snaplen) से पता चलता है कि हर पैकेट को कितनी मात्रा में कैप्चर करना है. शून्य (शून्य) वैल्यू का इस्तेमाल करने पर, पूरे पैकेट को कैप्चर किया जा सकता है.
आईपी पता उस होस्ट का आईपी पता है जिसके लिए हम पैकेट कैप्चर करना चाहते हैं
फ़ाइल नाम उस फ़ाइल का नाम है जिसमें tcpdump लिखा जाना है

उदाहरण

मान लें कि आपको मैसेज प्रोसेसर और बैकएंड सर्वर के बीच पैकेट कैप्चर करना है:

  1. Message प्रोसेसर मशीन में लॉग इन करें.
  2. बैकएंड सर्वर का आईपी पता तय करें, मान लें कि यह 22.22.22.22 पर है. इसके लिए, हमें पैकेट कैप्चर करने हैं.

किसी खास आईपी पते वाले होस्ट के लिए नेटवर्क पैकेट कैप्चर करने के लिए, नीचे दिए गए निर्देश का इस्तेमाल करें:

tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap

अगर बैकएंड सर्वर एक से ज़्यादा आईपी पतों का इस्तेमाल करता है, तो tcpdump कमांड में बैकएंड सर्वर के होस्टनेम का इस्तेमाल करें, जैसा कि यहां दिखाया गया है:

tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap

अगर अलग-अलग आईपी पतों (22.22.22.22, 33.33.33.33, और 44.44.44.44) वाले कई बैकएंड सर्वर हैं, तो नीचे दिए गए tcpdump कमांड का इस्तेमाल करें:

tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap

tcpdump का विश्लेषण किया जा रहा है

tcpdump कमांड या जीयूआई पर आधारित टूल Wireshark का इस्तेमाल करके, tcpdump को देखा जा सकता है या उसका विश्लेषण किया जा सकता है.

References

हीप डंप

हीप डंप Java प्रोसेस की मेमोरी का स्नैपशॉट हैं. इनमें हीप डंप को इकट्ठा किए जाने के समय, हीप में Java ऑब्जेक्ट और उसकी क्लास के बारे में जानकारी मौजूद होती है. आम तौर पर, इनका साइज़ काफ़ी बड़ा होता है. किसी भी साइज़ में ये कुछ 100 एमबी से लेकर कुछ जीबी तक हो सकती हैं.

हीप डंप तब बहुत काम का होता है, जब Message प्रोसेसर जैसी कोई Java प्रोसेस यह दिखाती है:

  • ज़्यादा मेमोरी का इस्तेमाल
  • OutofMemoryError

Java प्रोसेस के लिए हीप डंप जनरेट करना

Java, jmap नाम की एक यूटिलिटी है. इसकी मदद से, चल रही Java प्रोसेस की मेमोरी के आंकड़े या हीप डंप जनरेट किए जा सकते हैं.

किसी Java प्रोसेस का हीप डंप जनरेट करने के लिए, यहां दिए गए jmap कमांड का इस्तेमाल करें:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>

जगह:

पैरामीटर Description
JAVA_HOME यह Java की इंस्टॉलेशन डायरेक्ट्री है
फ़ाइल का नाम क्या वह फ़ाइल नाम है जिस पर हीप डंप लिखा जाएगा
pid यह उस Java ऐप्लिकेशन का प्रोसेस आईडी है जिसका हेड डंप कैप्चर किया जाना है

उदाहरण

मान लें कि Message प्रोसेसर mp-east में मेमोरी का बहुत ज़्यादा इस्तेमाल होता है या यह OutOfMemory गड़बड़ी का मैसेज दिखाता है. Unix ऑपरेटिंग सिस्टम पर ps कमांड का इस्तेमाल करके मैसेज प्रोसेसर का प्रोसेस आईडी तय करें. मान लें कि यह 24569 है.

हीप डंप जनरेट करने के लिए, jmap यूटिलिटी को इस तरह चलाएं:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569

हीप डंप का विश्लेषण किया जा रहा है

हीप डंप का विश्लेषण करने के लिए, Eclipse MAT (मेमोरी ऐनालाइज़र टूल) का इस्तेमाल किया जा सकता है. इससे यह पता लगाया जा सकता है कि कौनसे जावा ऑब्जेक्ट की वजह से, मेमोरी में गिरावट आ रही है या किन जावा ऑब्जेक्ट की वजह से, मेमोरी का ज़्यादा इस्तेमाल हो रहा है.

References

हीप डंप इकट्ठा करने का तरीका

jmap यूटिलिटी

जेमैप मैन पेज

मेमोरी ऐनालाइज़र टूल (एमएटी)


थ्रेड डंप

थ्रेड डंप, चल रहे Java प्रोसेस के सभी थ्रेड की स्थिति का स्नैपशॉट है. हर थ्रेड की स्थिति को इसके स्टैक का कॉन्टेंट दिखाया जाता है. इसे स्टैक ट्रेस कहा जाता है. इनमें से कुछ थ्रेड, चल रहे Java ऐप्लिकेशन का हिस्सा होंगी, जबकि अन्य थ्रेड JVM इंटरनल थ्रेड होंगी.

थ्रेड डंप, ऐप्लिकेशन की हर थ्रेड गतिविधियों के बारे में जानकारी दिखाता है. यह जानकारी इन कामों के लिए बहुत काम की हो सकती है:

  • सीपीयू (CPU) में बढ़ोतरी, धीमा जवाब मिलने में लगने वाले समय या काम न करने वाले Java ऐप्लिकेशन जैसी समस्याओं का पता लगाएं
  • ऐप्लिकेशन और JVM परफ़ॉर्मेंस ऑप्टिमाइज़ करें

थ्रेड डंप जनरेट किया जा रहा है

नीचे दी गई jstack यूटिलिटी का इस्तेमाल करके, Java प्रोसेस के लिए थ्रेड डंप जनरेट किया जा सकता है:

sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>

जगह:

पैरामीटर Description
JAVA_HOME यह Java की इंस्टॉलेशन डायरेक्ट्री है.
pid क्या यह Java ऐप्लिकेशन का प्रोसेस आईडी है, जिसके थ्रेड डंप को कैप्चर करना है.
फ़ाइल का नाम वह फ़ाइल नाम है जिसमें थ्रेड डंप लिखा जाएगा.

उदाहरण

Message प्रोसेसर mp-east पर, प्रोसेस आईडी 37320 के लिए थ्रेड डंप जनरेट करने के लिए, इस निर्देश का इस्तेमाल करें:

sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt

ऊपर दिए गए उदाहरण के मुताबिक, प्रोसेस के थ्रेड डंप को /opt/apigee/edge-message-processor/mp-east-threadDump.txt फ़ाइल में सेव किया जाएगा.

थ्रेड डंप का विश्लेषण किया जा रहा है

थ्रेड डंप को vi (Linux), नोटपैड (Windows) जैसे किसी भी टेक्स्ट एडिटर में देखने की सुविधा मिलती है. Thread Dump के अलग-अलग सेक्शन के बारे में जानकारी पाने और इसे समझने का तरीका जानने के लिए, Thread Dump पेज पर जाएं.

References