यह Apigee Edge का दस्तावेज़ है.
Go to the
Apigee X documentation. info
इस विषय में, नेटवर्क टूल, JVM टूल, और डाइग्नोस्टिक लॉग के बारे में बताया गया है. इनका इस्तेमाल करके, Apigee Edge पर नेटवर्क और JVM से जुड़ी समस्याओं को हल किया जा सकता है.
टीसीपी/आईपी पैकेट स्निफ़र (tcpdump) यूटिलिटी
tcpdump टूल, कमांड-लाइन पैकेट स्निफ़र टूल है. इसकी मदद से, नेटवर्क पर भेजे या पाए गए टीसीपी/आईपी पैकेट को कैप्चर या फ़िल्टर किया जा सकता है. यह Linux/Unix पर आधारित ऑपरेटिंग सिस्टम पर उपलब्ध है. yum का इस्तेमाल करके, इस यूटिलिटी को इस तरह इंस्टॉल किया जा सकता है:
yum install tcpdump
tcpdump टूल, नेटवर्क या एसएसएल से जुड़ी समस्याओं को हल करने में मददगार है. उदाहरण के लिए:
- गड़बड़ी 502: खराब गेटवे (ईओएफ़ एक्सेप्शन की वजह से होने वाली गड़बड़ी)
- गड़बड़ी 503: सेवा उपलब्ध नहीं है
- एसएसएल हैंडशेक में होने वाली गड़बड़ियां
इनमें से किसी भी समस्या को हल करने के लिए, आपको सबसे पहले उन कॉम्पोनेंट के पेयर का पता लगाना होगा जिनके बीच गड़बड़ी हुई है. Edge के मामले में, यह इनमें से कोई एक पेयर हो सकता है:
- क्लाइंट ऐप्लिकेशन और राऊटर
- राऊटर और मैसेज प्रोसेसर
- मैसेज प्रोसेसर और बैकएंड सर्वर
समस्या पैदा करने वाले कॉम्पोनेंट के पेयर की पहचान करने के बाद, इनमें से किसी एक या दोनों कॉम्पोनेंट पर tcpdump का इस्तेमाल करके, नेटवर्क पैकेट कैप्चर किए जा सकते हैं.
tcpdump का इस्तेमाल करके, किसी खास होस्ट को भेजे या उससे पाए गए पैकेट कैप्चर करना
किसी तय होस्ट (आईपी पते) को भेजे या उससे पाए गए सभी पैकेट कैप्चर करने और जानकारी को तय की गई फ़ाइल में सेव करने के लिए, tcpdump का यह निर्देश इस्तेमाल करें:
tcpdump -i any -s 0 host <IP address> -w <File name>
कहां:
| पैरामीटर | ब्यौरा |
| -i | (इंटरफ़ेस) उस इंटरफ़ेस के बारे में बताता है जिससे पैकेट कैप्चर किए जाने चाहिए. “any” वैल्यू का इस्तेमाल करने पर, सभी इंटरफ़ेस से पैकेट कैप्चर किए जा सकते हैं. |
| -s | (snarf/snaplen) बताता है कि हर पैकेट का कितना हिस्सा कैप्चर करना है. 0 (शून्य) वैल्यू का इस्तेमाल करने पर, पूरा पैकेट कैप्चर किया जा सकता है. |
| आईपी पता | उस होस्ट का आईपी पता है जिसके लिए हमें पैकेट कैप्चर करने हैं |
| फ़ाइल नाम | उस फ़ाइल का नाम है जिसमें tcpdump को लिखा जाना है |
उदाहरण
मान लें कि आपको मैसेज प्रोसेसर और बैकएंड सर्वर के बीच के पैकेट कैप्चर करने हैं:
- मैसेज प्रोसेसर मशीन में लॉग इन करें.
- उस बैकएंड सर्वर का आईपी पता पता करें (मान लें कि यह 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 देखे या उनका विश्लेषण किया जा सकता है.
रेफ़रंस
हीप डंप
हीप डंप, Java प्रोसेस की मेमोरी का स्नैपशॉट होता है. इसमें, हीप डंप इकट्ठा किए जाने के समय, हीप में मौजूद Java ऑब्जेक्ट और क्लास के बारे में जानकारी होती है. ये आम तौर पर काफ़ी बड़े होते हैं. इनका साइज़ कुछ 100 एमबी से लेकर कुछ जीबी तक हो सकता है.
हीप डंप तब बहुत काम का होता है, जब मैसेज प्रोसेसर जैसी Java प्रोसेस में ये समस्याएं दिखती हैं:
- मेमोरी का ज़्यादा इस्तेमाल
- OutofMemoryError
किसी Java प्रोसेस के लिए हीप डंप जनरेट करना
Java, jmap नाम की एक यूटिलिटी उपलब्ध कराता है. इसकी मदद से, चालू Java प्रोसेस के मेमोरी के आंकड़े या हीप डंप जनरेट किए जा सकते हैं.
किसी Java प्रोसेस का हीप डंप जनरेट करने के लिए, jmap का यह निर्देश इस्तेमाल करें:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
कहां:
| पैरामीटर | ब्यौरा |
| JAVA_HOME | Java की इंस्टॉलेशन डायरेक्ट्री है |
| filename | उस फ़ाइल का नाम है जिसमें हीप डंप लिखा जाएगा |
| pid | उस Java ऐप्लिकेशन की प्रोसेस आईडी है जिसका हीप डंप कैप्चर करना है |
उदाहरण
मान लें कि मैसेज प्रोसेसर 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 (Memory Analyzer Tool) का इस्तेमाल करके, हीप डंप का विश्लेषण किया जा सकता है. इससे, मेमोरी लीक होने की संभावना या यह पता लगाया जा सकता है कि किन Java ऑब्जेक्ट की वजह से मेमोरी का ज़्यादा इस्तेमाल हो रहा है.
रेफ़रंस
थ्रेड डंप
थ्रेड डंप, चालू Java प्रोसेस के सभी थ्रेड की स्थिति का स्नैपशॉट होता है. हर थ्रेड की स्थिति, उसके स्टैक के कॉन्टेंट के साथ दिखाई जाती है. इसे स्टैक ट्रेस कहा जाता है. कुछ थ्रेड, चालू Java ऐप्लिकेशन का हिस्सा होंगे, जबकि अन्य JVM के इंटरनल थ्रेड होंगे.
थ्रेड डंप से, ऐप्लिकेशन के हर थ्रेड की गतिविधियों के बारे में जानकारी मिलती है. यह जानकारी इन कामों के लिए बहुत काम की हो सकती है:
- सीपीयू के इस्तेमाल में अचानक बढ़ोतरी, रिस्पॉन्स टाइम धीमा होना या Java ऐप्लिकेशन के काम न करने जैसी समस्याओं का पता लगाना
- ऐप्लिकेशन और JVM की परफ़ॉर्मेंस को ऑप्टिमाइज़ करना
थ्रेड डंप जनरेट करना
किसी Java प्रोसेस के लिए थ्रेड डंप, jstack यूटिलिटी का इस्तेमाल करके जनरेट किया जा सकता है. जैसे, यहां दिखाया गया है:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
कहां:
| पैरामीटर | ब्यौरा |
| JAVA_HOME | Java की इंस्टॉलेशन डायरेक्ट्री है. |
| pid | उस Java ऐप्लिकेशन की प्रोसेस आईडी है जिसका थ्रेड डंप कैप्चर करना है. |
| filename | उस फ़ाइल का नाम है जिसमें थ्रेड डंप लिखा जाएगा. |
उदाहरण
मैसेज प्रोसेसर 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), notepad (Windows) जैसे किसी भी टेक्स्ट एडिटर में थ्रेड डंप देखे जा सकते हैं. थ्रेड डंप के अलग-अलग सेक्शन और जानकारी को समझने के तरीके के बारे में जानने के लिए, थ्रेड डंप लेख पढ़ें.