यह Apigee Edge का दस्तावेज़ है.
Go to the
Apigee X documentation. info
समस्या का ब्यौरा
एपीआई कॉल के जवाब में, क्लाइंट ऐप्लिकेशन को गड़बड़ी
कोड protocol.http.ResponseWithBody के साथ, एचटीटीपी स्टेटस कोड 502 Bad Gateway मिलता है.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 502 Bad Gateway
इसके अलावा, आपको गड़बड़ी के ये मैसेज दिख सकते हैं:
{
"fault":{
"faultstring":"Received 204 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}{
"fault":{
"faultstring":"Received 205 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}संभावित कारण
यह गड़बड़ी तब होती है, जब Apigee Edge को बैकएंड सर्वर से मिलने वाला एचटीटीपी रिस्पॉन्स,
204 No Content या 205 Reset Content होता है. हालांकि, इसमें रिस्पॉन्स
बॉडी और/या ये हेडर शामिल होते हैं:
Content-LengthContent-EncodingTransfer-Encoding
खास जानकारी
RFC 7231, सेक्शन 6.3.5: 204 No Content और
RFC 7231, सेक्शन 6.3.6: 205 Reset Content के मुताबिक, मूल सर्वर से स्टेटस कोड 204 No
Content या 205 Reset Content के साथ, रिस्पॉन्स पेलोड बॉडी के तौर पर कोई अतिरिक्त कॉन्टेंट
नहीं भेजा जाना चाहिए. `Content-Length`Content-Length, `Content-Encoding`Content-Encoding या `Transfer-Encoding`Transfer-Encoding जैसे रिस्पॉन्स हेडर, रिस्पॉन्स पेलोड के साइज़, टाइप या फ़ॉर्मैट के बारे में बताते हैं.
इसलिए, Apigee Edge, क्लाइंट को इन स्थितियों में गड़बड़ी कोड protocol.http.ResponseWithBody के साथ, 502 Bad Gateway स्टेटस कोड दिखाता है:
| बैकएंड सर्वर से मिला स्टेटस कोड | ||
|---|---|---|
| बैकएंड सर्वर से मिले रिस्पॉन्स में ये शामिल हैं | 204 कोई सामग्री नहीं | 205 सामग्री रीसेट करें |
| जवाब का मुख्य भाग | गड़बड़ी | गड़बड़ी |
(शून्य के अलावा कोई वैल्यू सेट की गई है) |
गड़बड़ी | गड़बड़ी |
(Apigee Edge में काम करने वाली एन्कोडिंग पर सेट है) |
गड़बड़ी | कोई गड़बड़ी नहीं |
Transfer-Encoding |
गड़बड़ी | गड़बड़ी |
इस गड़बड़ी की ये वजहें हो सकती हैं:
| वजह | ब्यौरा | इनके लिए समस्या हल करने के निर्देश लागू होते हैं |
|---|---|---|
| बैकएंड सर्वर से मिले 204 रिस्पॉन्स के साथ रिस्पॉन्स बॉडी या हेडर | बैकएंड सर्वर, 204 No Content या 205 Reset Content
रिस्पॉन्स के साथ, रिस्पॉन्स बॉडी और/या Content-Type,
Content-Encoding या Transfer-Encoding हेडर में से एक या उससे ज़्यादा हेडर भेजता है. |
Edge Public और Private Cloud के उपयोगकर्ता |
गड़बड़ी की जानकारी इकट्ठा करने के सामान्य चरण
इस गड़बड़ी की जानकारी इकट्ठा करने के लिए, इनमें से कोई टूल/तकनीक इस्तेमाल करें:
एपीआई की परफ़ॉर्मेंस मॉनिटर करना
एपीआई की परफ़ॉर्मेंस मॉनिटर करने की सुविधा का इस्तेमाल करके, गड़बड़ी की जानकारी इकट्ठा करने के लिए:
- ज़रूरी भूमिका वाले उपयोगकर्ता के तौर पर, Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में साइन इन करें.
उस संगठन पर स्विच करें जिसमें आपको समस्या की जांच करनी है.
- विश्लेषण करें > एपीआई की परफ़ॉर्मेंस मॉनिटर करें > जांच करें पेज पर जाएं.
- वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखीं.
- गड़बड़ी कोड को समय के हिसाब से प्लॉट करें.
वह सेल चुनें जिसमें गड़बड़ी कोड
protocol.http.ResponseWithBodyहो. जैसे, यहां दिखाया गया है:
आपको गड़बड़ी कोड
protocol.http.ResponseWithBodyके बारे में जानकारी दिखेगी. जैसे, यहां दिखाया गया है:
लॉग देखें पर क्लिक करें और पूरे न हो पाने वाले अनुरोध की लाइन को बड़ा करें.
- लॉग विंडो में, यह जानकारी नोट करें:
- स्टेटस कोड:
502 - गड़बड़ी का सोर्स:
target - गड़बड़ी कोड:
protocol.http.ResponseWithBody.
- स्टेटस कोड:
- अगर गड़बड़ी का सोर्स की वैल्यू
targetहै और गड़बड़ी कोड की वैल्यूprotocol.http.ResponseWithBodyहै, तो इसका मतलब है कि गड़बड़ी इसलिए हुई, क्योंकि बैकएंड सर्वर ने रिस्पॉन्स बॉडी और/या संभावित वजहें सेक्शन में बताए गए हेडर में से कोई एक हेडर के साथ,204 No Contentया205 Reset Contentस्टेटस कोड भेजा.
ट्रेस टूल
ट्रेस टूल का इस्तेमाल करके, गड़बड़ी की जानकारी इकट्ठा करने के लिए:
- ट्रेस सेशन चालू करें
और इनमें से कोई एक काम करें:
502 Bad Gatewayगड़बड़ी होने का इंतज़ार करें. या- अगर समस्या को फिर से दोहराया जा सकता है, तो एपीआई कॉल करें और
502 Bad Gatewayगड़बड़ी को फिर से दोहराएं.
पक्का करें कि सभी FlowInfo दिखाएं चालू हो:
- पूरे न हो पाने वाले किसी एक अनुरोध को चुनें और उसका ट्रेस देखें.
- ट्रेस के अलग-अलग चरणों पर जाएं और पता लगाएं कि गड़बड़ी कहां हुई.
आम तौर पर, आपको
flowinfoगड़बड़ी में गड़बड़ी दिखेगी. जैसे, यहां दिखाया गया है:पहली स्थिति
पहली स्थिति: बैकएंड सर्वर, स्टेटस कोड
204 No Contentके साथ रिस्पॉन्स देता है. इसमें रिस्पॉन्स बॉडी और/या संभावित वजहें में बताए गए हेडर में से कोई एक हेडर शामिल होता है.
ट्रेस में, इनकी वैल्यू नोट करें:
- गड़बड़ी:
Received 204 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
दूसरी स्थिति
दूसरी स्थिति: बैकएंड सर्वर, स्टेटस कोड
204 No Contentके साथ रिस्पॉन्स देता है. इसमें रिस्पॉन्स बॉडी और/या संभावित वजहें में बताए गए हेडर में से कोई एक हेडर शामिल होता है.
ट्रेस में, इनकी वैल्यू नोट करें:
- गड़बड़ी:
Received 205 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
- गड़बड़ी:
- ट्रेस में AX (रिकॉर्ड किया गया Analytics डेटा) चरण पर जाएं और उस पर क्लिक करें.
नीचे की ओर स्क्रोल करके, चरण की जानकारी, गड़बड़ी के हेडर सेक्शन पर जाएं और X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू पता करें. जैसे, यहां दिखाया गया है:
- ध्यान दें कि X-Apigee-fault-code और X-Apigee-fault-source
are protocol.http.ResponseWithBodyऔरtargetकी वैल्यू, क्रमशः हैं. इससे पता चलता है कि गड़बड़ी इसलिए हुई, क्योंकि बैकएंड सर्वर ने रिस्पॉन्स बॉडी और/या संभावित वजहें में बताए गए हेडर में से कोई एक हेडर के साथ,204 No Contentया205 Reset Contentस्टेटस कोड भेजा.गड़बड़ी वैल्यू X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target
NGINX
NGINX के ऐक्सेस लॉग का इस्तेमाल करके, गड़बड़ी की जानकारी इकट्ठा करने के लिए:
- अगर आप Private Cloud के उपयोगकर्ता हैं, तो एचटीटीपी
502 Bad Gatewayके बारे में अहम जानकारी पाने के लिए, NGINX के ऐक्सेस लॉग का इस्तेमाल किया जा सकता है. NGINX के ऐक्सेस लॉग देखें:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logयहां: ORG, ENV, और PORT# को असल वैल्यू से बदल दिया जाता है.
- खोजकर देखें कि
502किसी खास अवधि के दौरान (अगर समस्या पहले हुई थी) या अब भी502गड़बड़ियां तो नहीं हो रही हैं. साथ ही, देखें कि गड़बड़ी कोडprotocol.http.ResponseWithBodyके साथ कोई गड़बड़ी तो नहीं है. अगर आपको X-Apigee-fault-code के साथ कोई
502गड़बड़ी मिलती है और इसकी वैल्यूprotocol.http.ResponseWithBodyसे मेल खाती है, तो X-Apigee-fault-source की वैल्यू पता करें.NGINX के ऐक्सेस लॉग से मिली 502 गड़बड़ी का नमूना:
NGINX के ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में, X- Apigee-fault-code और X-Apigee-fault-source की ये वैल्यू हैं:
रिस्पॉन्स हेडर वैल्यू X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target- ध्यान दें कि X-Apigee-fault-code और X-Apigee-fault-source
की वैल्यू, क्रमशः
protocol.http.ResponseWithBodyऔरtargetहैं. इससे पता चलता है कि गड़बड़ी इसलिए हुई, क्योंकि बैकएंड सर्वर ने रिस्पॉन्स बॉडी और/या संभावित वजहें में बताए गए हेडर में से कोई एक हेडर के साथ,204 No Contentया205 Reset Contentस्टेटस कोड भेजा.
वजह: बैकएंड सर्वर से मिले 204 रिस्पॉन्स के साथ रिस्पॉन्स बॉडी या हेडर
गड़बड़ी की जानकारी इकट्ठा करना
- एपीआई की परफ़ॉर्मेंस मॉनिटर करने की सुविधा, ट्रेस टूल या NGINX के ऐक्सेस लॉग का इस्तेमाल करके, देखी गई गड़बड़ी के लिए गड़बड़ी कोड और गड़बड़ी का सोर्स पता करें. इसके लिए, गड़बड़ी की जानकारी इकट्ठा करने के सामान्य चरण में बताया गया तरीका अपनाएं.
- अगर गड़बड़ी कोड
protocol.http.ResponseWithBodyहै और गड़बड़ी का सोर्स की वैल्यूtargetहै, तो इसका मतलब है कि बैकएंड सर्वर ने रिस्पॉन्स बॉडी और/या संभावित वजहें में बताए गए हेडर में से कोई एक हेडर के साथ,204 No Contentया205 Reset Contentस्टेटस कोड भेजा. यह पुष्टि करने के लिए कि बैकएंड सर्वर ने वाकई में रिस्पॉन्स पेलोड बॉडी और/या संभावित वजहें में बताए गए हेडर में से एक या उससे ज़्यादा हेडर भेजे हैं या नहीं, यह तरीका अपनाएं:
अगर आप Public Cloud के उपयोगकर्ता हैं और अपने किसी भी सिस्टम से, बैकएंड सर्वर को वही एपीआई अनुरोध भेजा जा सकता है.
- अगर आप Private Cloud के उपयोगकर्ता हैं, तो उस संगठन और एनवायरमेंट से जुड़े किसी एक मैसेज प्रोसेसर से, बैकएंड सर्वर को वही एपीआई अनुरोध सीधे भेजा जा सकता है जहां गड़बड़ी देखी गई है.
बैकएंड सर्वर से मिले रिस्पॉन्स की समीक्षा करें और पुष्टि करें कि इसमें एक रिस्पॉन्स पेलोड बॉडी और/या ऊपर बताए गए हेडर में से एक या उससे ज़्यादा हेडर शामिल हैं. अगर हां, तो यही गड़बड़ी की वजह है.
पहला नमूना
पहला नमूना: बैकएंड सर्वर का 204 रिस्पॉन्स, जिसमें Content-Encoding हेडर शामिल है
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Encoding: gzip< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveइस नमूने में, बैकएंड सर्वर ने
204 No Contentस्टेटस कोड औरContent-Encoding: gzipके साथ रिस्पॉन्स दियादूसरा नमूना
दूसरा नमूना: बैकएंड सर्वर का 204 रिस्पॉन्स, जिसमें Content-Length हेडर शामिल है
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Length: 48< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveइस नमूने में, बैकएंड सर्वर ने
204 No Contentस्टेटस कोड औरContent-Length: 48के साथ रिस्पॉन्स दियातीसरा नमूना
तीसरा नमूना: बैकएंड सर्वर का 205 रिस्पॉन्स, जिसमें रिस्पॉन्स बॉडी शामिल है
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 205 Reset Content < Date: Sat, 31 Jul 2021 17:14:09 GMT < Content-Length: 12 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host X.X.X.X left intact
This is a sample Responseइस नमूने में, बैकएंड सर्वर ने
205 Reset Contentस्टेटस कोड के साथ रिस्पॉन्स दिया. इसमें रिस्पॉन्स बॉडीThis is a sample Response.शामिल है- ऊपर दिए गए सभी उदाहरणों में, बैकएंड सर्वर ने
204 No Contentया205 Reset Contentस्टेटस कोड रिस्पॉन्स बॉडी और/या संभावित वजहें में बताए गए हेडर में से कोई एक हेडर के साथ भेजा. - इसलिए, Apigee Edge ने गड़बड़ी कोड
protocol.http.ResponseWithBodyके साथ,502 Bad Gatewayस्टेटस कोड भेजा.
रिज़ॉल्यूशन
पक्का करें कि Apigee Edge को 204 No Content
या 205 Reset Content रिस्पॉन्स भेजते समय, बैकएंड सर्वर हमेशा खास जानकारी
RFC 7231, सेक्शन 6.3.6: 205 Reset Content के मुताबिक काम करे. इसका मतलब है कि बैकएंड सर्वर को
ये चीज़ें 204 No Content या
205 Reset Content रिस्पॉन्स के साथ **_नहीं_** भेजनी चाहिए:
- रिस्पॉन्स पेलोड बॉडी
- और ये हेडर:
Content-LengthContent-EncodingTransfer-Encoding
खास जानकारी
अगर बैकएंड सर्वर, 204 No Content या 205 Reset Content रिस्पॉन्स भेजता है, लेकिन RFC की इन खास जानकारी के मुताबिक काम नहीं करता है, तो Apigee Edge, गड़बड़ी कोड
protocol.http.ResponseWithBody के साथ, 502 Bad Gateway स्टेटस कोड दिखाता है:
| खास जानकारी |
|---|
| RFC 7231, सेक्शन 6.3.5: 204 No Content |
| RFC 7231, सेक्शन 6.3.6: 205 Reset Content |
ध्यान देने वाली ज़रूरी बातें
हमारा सुझाव है कि बैकएंड सर्वर को ठीक किया जाए, ताकि वह 204 No Content
और 205 Reset Content स्टेटस कोड, रिस्पॉन्स बॉडी और इन
हेडर के बिना भेजे - Content-Length, Content-Encoding, और
Transfer-Encoding. साथ ही, वह खास जानकारी
RFC 7231, सेक्शन 6.3.5: 204 No Content और
RFC 7231, सेक्शन 6.3.6: 205 Reset Content के मुताबिक काम करे.
अगर आपको अब भी Apigee की सहायता टीम से मदद चाहिए, तो गड़बड़ी की जानकारी इकट्ठा करने के लिए ज़रूरी शर्तें पर जाएं.
गड़बड़ी की जानकारी इकट्ठा करने के लिए ज़रूरी शर्तें
गड़बड़ी की यह जानकारी इकट्ठा करें. इसके बाद, Apigee Edge की सहायता टीम से संपर्क करें:
अगर आप Public Cloud के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- एनवायरमेंट का नाम
- एपीआई प्रॉक्सी का नाम
502गड़बड़ी को फिर से दोहराने के लिए इस्तेमाल किया गया पूराcurlनिर्देश- एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
अगर आप Private Cloud के उपयोगकर्ता हैं, तो यह जानकारी दें:
- पूरे न हो पाने वाले अनुरोधों के लिए, गड़बड़ी का पूरा मैसेज
- एनवायरमेंट का नाम
- एपीआई प्रॉक्सी बंडल
- एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
NGINX के ऐक्सेस लॉग
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logयहां: ORG, ENV और PORT# को असल वैल्यू से बदल दिया जाता है.
- मैसेज प्रोसेसर के सिस्टम लॉग
/opt/apigee/var/log/edge-message-processor/logs/system.log