आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
समस्या का ब्यौरा
एपीआई प्रॉक्सी कॉल के बाद, क्लाइंट ऐप्लिकेशन को Service Unavailable मैसेज के साथ एचटीटीपी रिस्पॉन्स स्टेटस 503 मिलता है.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 503 Service Unavailable
इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:
{
"fault": {
"faultstring": "The Service is temporarily unavailable",
"detail": {
"errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
}
}
}संभावित वजहें
| वजह | ब्यौरा | इनके लिए समस्या हल करने के निर्देश |
|---|---|---|
| टारगेट सर्वर, कनेक्शन को समय से पहले बंद कर देता है | टारगेट सर्वर, कनेक्शन को समय से पहले बंद कर देता है. ऐसा तब होता है, जब मैसेज प्रोसेसर अब भी अनुरोध पेलोड भेज रहा होता है. | Edge Public और Private Cloud के उपयोगकर्ताओं के लिए |
गड़बड़ी का पता लगाने के सामान्य चरण
अनुरोध पूरा न होने पर, मैसेज आईडी का पता लगाना
ट्रेस टूल
ट्रेस टूल का इस्तेमाल करके, अनुरोध पूरा न होने पर मिलने वाले मैसेज आईडी का पता लगाने के लिए:
- अगर समस्या अब भी बनी हुई है, तो जिस एपीआई पर असर पड़ा है उसके लिए ट्रेस सेशन चालू करें.
- एपीआई कॉल करें और समस्या को दोबारा हल करें -
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.adaptors.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_FLOWstate प्रॉपर्टी के तुरंत बाद, Error पैन में ये दोनों सेट हों:- error.class:
com.apigee.errors.http.server.ServiceUnavailableException - error.cause:
Broken pipe

- error.class:
- ज़्यादा जानकारी के लिए, tcpdump का इस्तेमाल करना लेख पढ़ें.
- ट्रेस टूल का इस्तेमाल करें. इसके बारे में गड़बड़ी की जानकारी देने वाले सामान्य चरणों में बताया गया है
और पुष्टि करें कि आपने Analytics का डेटा रिकॉर्ड किया गया पैनल में, ये दोनों चीज़ें सेट की हों:
- अगर आप Private Cloud के उपयोगकर्ता हैं, तो:
- अनुरोध पूरा न होने पर, मैसेज आईडी का पता लगाएं.
- मैसेज प्रोसेसर के लॉग में मैसेज आईडी खोजें
(
/opt/apigee/var/log/edge-message-processor/logs/system.log). - आपको इनमें से कोई एक अपवाद दिखेगा:
अपवाद #1: java.io.IOException: Broken pipe occurred while writing to channel 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: onExceptionWrite अपवाद: {}
java.io.IOException: Broken pipe2021-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
- इन दोनों अपवादों से पता चलता है कि मैसेज प्रोसेसर, अनुरोध के पेलोड को बैकएंड सर्वर पर लिख रहा था. इसी दौरान, बैकएंड सर्वर ने कनेक्शन को समय से पहले बंद कर दिया. इसलिए, Message Processor
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 का सैंपल आउटपुट (Message Processor पर इकट्ठा किया गया):

ऊपर दिए गए
tcpdumpमें, आपको यह जानकारी दिखेगी:- पैकेट
4में, मैसेज प्रोसेसर ने बैकएंड सर्वर कोPOSTअनुरोध भेजा. - पैकेट
5,8,9,10,11में, मैसेज प्रोसेसर ने अनुरोध पेलोड को बैकएंड सर्वर को भेजना जारी रखा. - पैकेट
6और7में,बैकएंड सर्वर ने Message Processor से मिले अनुरोध के पेलोड के एक हिस्से के लिएACKके साथ जवाब दिया. - हालांकि, पैकेट
12में, मिले हुए ऐप्लिकेशन डेटा पैकेट के लिएACKके साथ जवाब देने और इसके बाद रिस्पॉन्स पेलोड के साथ जवाब देने के बजाय, बैकएंड सर्वरFIN ACKके साथ जवाब देता है. इससे कनेक्शन बंद हो जाता है. - इससे साफ़ तौर पर पता चलता है कि मैसेज प्रोसेसर, अनुरोध पेलोड भेज रहा था. हालांकि, बैकएंड सर्वर ने कनेक्शन को समय से पहले ही बंद कर दिया.
- इस वजह से, मैसेज प्रोसेसर एक
IOException: Broken Pipeगड़बड़ी रिकॉर्ड करता है और क्लाइंट को503भेजता है
- पैकेट
रिज़ॉल्यूशन
- अपनी ऐप्लिकेशन और नेटवर्किंग टीमों के साथ मिलकर, बैकएंड सर्वर साइड पर समय से पहले कनेक्शन बंद होने की समस्या का विश्लेषण करें और उसे ठीक करें.
- पक्का करें कि बैकएंड सर्वर ऐप्लिकेशन, पूरे अनुरोध पेलोड को पाने से पहले कनेक्शन को टाइम आउट या रीसेट न कर रहा हो.
- अगर आपके पास Apigee और बैकएंड सर्वर के बीच कोई इंटरमीडियरी नेटवर्किंग डिवाइस या लेयर है, तो पक्का करें कि पूरा अनुरोध पेलोड मिलने से पहले उनका टाइम आउट न हो.
अगर समस्या अब भी बनी रहती है, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.
डाइग्नोस्टिक जानकारी इकट्ठा करना ज़रूरी है
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यहां दी गई डाइग्नोस्टिक जानकारी इकट्ठा करें. इसके बाद, Apigee Edge की सहायता टीम से संपर्क करें:
अगर आप पब्लिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
503गड़बड़ी को फिर से बनाने के लिए,curlकमांड पूरी करें- अनुरोध वाली ट्रेस फ़ाइल, जिसमें
503 Service Unavailableगड़बड़ी है - अगर फ़िलहाल
503गड़बड़ियां नहीं हो रही हैं, तो उस समयावधि की जानकारी दें, जब503गड़बड़ियां हुई थीं. साथ ही, टाइमज़ोन की जानकारी भी दें.
अगर आप Private 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गड़बड़ी होने पर, मैसेज प्रोसेसर और बैकएंड सर्वर पर इकट्ठा किया गया