आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को इस मैसेज के साथ एचटीटीपी रिस्पॉन्स स्टेटस 503
मिलता है
एपीआई प्रॉक्सी कॉल के बाद Service Unavailable
.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 503 Service Unavailable
इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:
{ "fault": { "faultstring": "The Service is temporarily unavailable", "detail": { "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable" } } }
संभावित वजहें
वजह | ब्यौरा | इसके लिए लागू होने वाले, समस्या हल करने के निर्देश |
---|---|---|
टारगेट सर्वर, कनेक्शन को समय से पहले बंद कर देता है | जब मैसेज प्रोसेसर स्थिर हो, तब टारगेट सर्वर कनेक्शन को समय से पहले खत्म कर देता है अनुरोध पेलोड भेज रहे हैं. | Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता |
गड़बड़ी की जांच करने के सामान्य तरीके
पूरे न हो पाने वाले अनुरोध का मैसेज आईडी तय करना
ट्रेस करने वाला टूल
ट्रेस टूल का इस्तेमाल करके, पूरे न हो पाने वाले अनुरोध का मैसेज आईडी पता करने के लिए:
- अगर समस्या अब भी मौजूद है, तो को चालू करें जिस एपीआई पर असर हुआ है उसके लिए ट्रेस सेशन.
- एपीआई कॉल करें और समस्या के बारे में बताएं -
503 Service Unavailable
messaging.adaptors.http.flow.ServiceUnavailable.
गड़बड़ी कोड के साथ - पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें.
- AX फ़ेज़ पर जाएं और मैसेज आईडी तय करें
(
X-Apigee.Message-ID
) नीचे की ओर स्क्रोल करके चरण की जानकारी सेक्शन, जैसा कि यहां दिए गए डायग्राम में दिखाया गया है.
NGINX ऐक्सेस लॉग
NGINX ऐक्सेस लॉग का इस्तेमाल करके, पूरे न हो पाने वाले अनुरोध का मैसेज आईडी तय करने के लिए:
503
गड़बड़ियों के लिए मैसेज आईडी तय करने के लिए, आप NGINX ऐक्सेस लॉग भी देख सकते हैं.
यह खास तौर पर तब फ़ायदेमंद होता है, जब यह समस्या पहले हुई हो या बीच-बीच में समस्या होती हो
और आप यूज़र इंटरफ़ेस (यूआई) में ट्रेस को कैप्चर नहीं कर पा रहे हैं. NGINX ऐक्सेस लॉग से यह जानकारी पता लगाने के लिए, नीचे दिया गया तरीका अपनाएं:
- NGINX ऐक्सेस लॉग देखें: (
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
) - खोजें कि किसी खास समयावधि के दौरान, किसी एपीआई प्रॉक्सी के लिए
503
गड़बड़ियां हुई हैं या नहीं (अगर समस्या पहले हुई है) या503
के साथ अब भी कोई अनुरोध पूरा नहीं हो पा रहा है. - अगर X-Apigee-fault-code Messaging.adapters.http.flow.ServiceUnavailable में कोई
503
गड़बड़ी है, नीचे दिए गए उदाहरण में दिखाए गए एक या ज़्यादा अनुरोधों के लिए मैसेज आईडी को नोट करें:503
गड़बड़ी दिखाने वाली सैंपल एंट्री
वजह: टारगेट सर्वर, समय से पहले कनेक्शन बंद कर देता है
संक्रमण की जांच
- अगर आप सार्वजनिक क्लाउड या प्राइवेट क्लाउड के उपयोगकर्ता हैं, तो:
- ट्रेस टूल का इस्तेमाल करें (जैसा कि डाइग्नोस्टिक्स के सामान्य चरणों में बताया गया है)
और पुष्टि करें कि Analytics का डेटा रिकॉर्ड किया गया पैनल में आपने ये दोनों चीज़ें सेट कर रखी हैं:
- X-Apigee.fault-code:
messaging.adaptors.http.flow.ServiceUnavailable
- X-Apigee.fault-source:
target
- X-Apigee.fault-code:
- ट्रेस टूल का इस्तेमाल करें (जैसा कि डाइग्नोस्टिक्स के सामान्य चरणों में बताया गया है)
इसके बाद, पुष्टि करें कि गड़बड़ी वाले पैनल में, ये दोनों वैल्यू सेट हों.
TARGET_REQ_FLOW
state प्रॉपर्टी:- error.class:
com.apigee.errors.http.server.ServiceUnavailableException
- error.cause:
Broken pipe
- error.class:
- आगे की जांच के लिए, tcpdump का इस्तेमाल करना पर जाएं.
- ट्रेस टूल का इस्तेमाल करें (जैसा कि डाइग्नोस्टिक्स के सामान्य चरणों में बताया गया है)
और पुष्टि करें कि Analytics का डेटा रिकॉर्ड किया गया पैनल में आपने ये दोनों चीज़ें सेट कर रखी हैं:
- अगर आप प्राइवेट क्लाउड के उपयोगकर्ता हैं, तो:
- पूरे न हो पाने वाले अनुरोध का मैसेज आईडी पता करें.
- मैसेज प्रोसेसर के लॉग में, मैसेज आईडी खोजें
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
). - आपको नीचे दिए गए अपवादों में से कोई एक दिखेगा:
अपवाद #1: java.io.IO एसडीके: चैनल ClientOutputChannel पर लिखते समय, पाइप की गड़बड़ी टूट गई
2021-01-30 15:31:14,693 org:anotherorg env:prod api:myproxy rev:1 messageid:myorg-opdk-test-1-30312-13747-1 NIOThread@1 INFO HTTP.SERVICE - ExceptionHandler.handleException() : Exception java.io.IOException: Broken pipe occurred while writing to channel ClientOutputChannel(ClientChannel[Connected: Remote:IP:PORT Local:0.0.0.0:42828]@8380 useCount=1 bytesRead=0 bytesWritten=76295 age=2012ms lastIO=2ms isOpen=false)
या
अपवाद #2: onexceptWrite अपवाद: {}
java.io.IOexcept: पाइप की गड़बड़ी2021-01-31 15:29:37,438 org:anotherorg env:prod api:503-test rev:1 messageid:leonyoung-opdk-test-1-18604-13978-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context$2.onException() : ClientChannel[Connected: Remote:IP:PORT Local:0.0.0.0:57880]@8569 useCount=1 bytesRead=0 bytesWritten=76295 age=3180ms lastIO=2 ms isOpen=false.onExceptionWrite exception: {} java.io.IOException: Broken pipe
- ये दोनों अपवाद यह बताते हैं कि जब मैसेज प्रोसेसर मैसेज प्रोसेस कर रहा था,
ने बैकएंड सर्वर पर पेलोड का अनुरोध किया, तो कनेक्शन को
बैकएंड सर्वर. इसलिए, मैसेज प्रोसेसर, अपवाद
java.io.IOException: Broken pipe
को हटा देता है. Remote:IP:PORT
, समाधान किए गए बैकएंड सर्वर को दिखाता है आईपी पता और पोर्ट नंबर.- ऊपर दिए गए गड़बड़ी के मैसेज में एट्रिब्यूट
bytesWritten=76295
बताता है कि कि मैसेज प्रोसेसर ने बैकएंड को76295
बाइट का पेलोड भेजा था सर्वर. bytesRead=0
एट्रिब्यूट से पता चलता है कि मैसेज प्रोसेसर ने को बैकएंड सर्वर से कोई डेटा (रिस्पॉन्स) मिला.- इस समस्या की ज़्यादा जांच करने के लिए, बैकएंड पर
tcpdump
इकट्ठा करें और नीचे बताए गए तरीके से इसका विश्लेषण करें.
tcpdump का इस्तेमाल करना
-
इसके साथ बैकएंड सर्वर या मैसेज प्रोसेसर पर
tcpdump
कैप्चर करें ये निर्देश होंगे:बैकएंड सर्वर पर
tcpdump
इकट्ठा करने का निर्देश:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
मैसेज प्रोसेसर पर,
tcpdump
इकट्ठा करने का निर्देश:tcpdump -i any -s 0 host BACKEND_HOSTNAME -w FILE_NAME
- कैप्चर किए गए
tcpdump
का विश्लेषण करें:tcpdump आउटपुट का सैंपल (मैसेज प्रोसेसर पर इकट्ठा किया गया):
ऊपर दिए गए
tcpdump
में, आपको यह जानकारी दिखेगी:- पैकेट
4
में, मैसेज प्रोसेसर नेPOST
का अनुरोध भेजा है भी डाउनलोड कर सकता है. - पैकेट
5
में,8
,9
,10
,11
, मैसेज प्रोसेसर ने अनुरोध पेलोड को बैकएंड सर्वर. - पैकेट
6
और7
में,बैकएंड सर्वर ने मैसेज प्रोसेसर से मिले अनुरोध पेलोड के एक हिस्से के लिएACK
. - हालांकि,
ACK
से जवाब देने के बजाय, पैकेट12
में दिए गए डेटा पैकेट के लिए और बाद में रिस्पॉन्स के साथ जवाब देने के लिए पेलोड है, तो बैकएंड सर्वर इसके बजायFIN ACK
कनेक्शन बंद हो जाता है. - इससे साफ़ तौर पर पता चलता है कि बैकएंड सर्वर, कनेक्शन को समय से पहले बंद कर रहा है जबकि मैसेज प्रोसेसर अनुरोध पेलोड भेज रहा था.
- इससे मैसेज प्रोसेसर,
IOException: Broken Pipe
को रिकॉर्ड करता है गड़बड़ी ठीक करें और क्लाइंट को503
दिखाएं
- पैकेट
रिज़ॉल्यूशन
- समस्याओं का विश्लेषण करने और उन्हें ठीक करने के लिए, अपने ऐप्लिकेशन और नेटवर्किंग टीमों में से किसी एक या दोनों के साथ काम करें की समस्या है.
- पक्का करें कि बैकएंड सर्वर ऐप्लिकेशन टाइम आउट नहीं कर रहा या कनेक्शन को रीसेट नहीं कर रहा पूरा अनुरोध पेलोड पाने से पहले.
- अगर आपके पास Apigee और बैकएंड सर्वर के बीच कोई इंटरमीडियरी नेटवर्किंग डिवाइस या लेयर है, तो तो पक्का करें कि पूरा अनुरोध पेलोड मिलने से पहले उनकी अवधि खत्म न हो रही हो.
अगर समस्या अब भी बनी रहती है, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यह जानकारी इकट्ठा करें और फिर Apigee Edge की सहायता टीम से संपर्क करें:
अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
503
गड़बड़ी को ठीक करने के लिए,curl
निर्देश को पूरा करें- अनुरोध वाली
503 Service Unavailable
गड़बड़ी वाली फ़ाइल ट्रेस करें - अगर
503
गड़बड़ियां अभी नहीं हो रही हैं, तो समयावधि के साथ टाइमज़ोन की जानकारी, जब पहले503
गड़बड़ियां हुई थीं.
अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:
- पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
- संगठन, एनवायरमेंट का नाम, और एपीआई प्रॉक्सी का नाम जिसके लिए आपको निगरानी की जा रही है
503
गड़बड़ियां - एपीआई प्रॉक्सी बंडल
503 Service Unavailable
गड़बड़ी वाले अनुरोधों की ट्रेस फ़ाइल- NGINX ऐक्सेस लॉग
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- मैसेज प्रोसेसर के लॉग
/opt/apigee/var/log/edge-message-processor/logs/system.log
503
गड़बड़ी होने के समय, टाइमज़ोन की जानकारी वाली समयावधिTcpdumps
को मैसेज प्रोसेसर और बैकएंड सर्वर पर इकट्ठा किया गया, जब कोई गड़बड़ी हुई