Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को एपीआई कॉल के रिस्पॉन्स के तौर पर, गड़बड़ी कोड के साथ 502 Bad Gateway
का एचटीटीपी स्टेटस कोड
protocol.http.TooBigBody
मिलता है.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 502 Bad Gateway
इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:
{ "fault":{ "faultstring":"Body buffer overflow", "detail":{ "errorcode":"protocol.http.TooBigBody" } } }
संभावित कारण
यह गड़बड़ी तब होती है, जब टारगेट/बैकएंड सर्वर से एचटीटीपी रिस्पॉन्स के तौर पर Apigee Edge को भेजा गया पेलोड साइज़, Apigee Edge में दी गई सीमा से ज़्यादा हो.
गड़बड़ी की ये वजहें हो सकती हैं:
वजह | ब्यौरा | समस्या हल करने के लिए निर्देश |
---|---|---|
रिस्पॉन्स पेलोड का साइज़, तय सीमा से ज़्यादा है | Apigee को एचटीटीपी रिस्पॉन्स के तौर पर, टारगेट/बैकएंड सर्वर से भेजा गया पेलोड साइज़, Apigee में तय सीमा से ज़्यादा है. | Edge के सार्वजनिक और निजी क्लाउड के उपयोगकर्ता |
डिकंप्रेशन के बाद रिस्पॉन्स पेलोड का साइज़, तय सीमा से ज़्यादा हो गया है | Apigee को भेजे गए एचटीटीपी रिस्पॉन्स के तौर पर, टारगेट/बैकएंड सर्वर से कंप्रेस किए गए फ़ॉर्मैट में भेजा गया पेलोड साइज़, तय सीमा से ज़्यादा है. ऐसा Apigee से डीकंप्रेस किए जाने पर किया जाता है. | Edge के सार्वजनिक और निजी क्लाउड के उपयोगकर्ता |
निदान के सामान्य चरण
इस गड़बड़ी का पता लगाने के लिए, नीचे दिए गए किसी टूल/तकनीक का इस्तेमाल करें:
एपीआई मॉनिटरिंग
एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:
- सही भूमिका वाले उपयोगकर्ता के तौर पर, Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में साइन इन करें.
उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.
- विश्लेषण करें > एपीआई की निगरानी करना > जांच करें पेज पर जाएं.
- वह खास समयसीमा चुनें जिसमें आपने गड़बड़ियां देखी थीं.
- गड़बड़ी वाले कोड को सटीक बनाने के लिए, प्रॉक्सी फ़िल्टर को चुना जा सकता है.
- समय के हिसाब से गलत कोड प्लॉट करें.
वह सेल चुनें जिसमें गड़बड़ी कोड
protocol.http.TooBigBody
है, जैसा कि नीचे दिखाया गया है:आपको गड़बड़ी के कोड
protocol.http.TooBigBody
के बारे में जानकारी दिखेगी, जैसा कि यहां दिखाया गया है:लॉग देखें पर क्लिक करें और पूरे न हो पाने वाले अनुरोध की लाइन को बड़ा करें.
- लॉग विंडो में, इन जानकारी पर ध्यान दें:
- स्थिति कोड:
502
- गलत इस्तेमाल का सोर्स:
target
- गलत कोड:
protocol.http.TooBigBody
.
- स्थिति कोड:
- अगर गलत सोर्स की वैल्यू
target
है और फ़ॉल कोड की वैल्यूprotocol.http.TooBigBody
है, तो इसका मतलब है कि टारगेट/ बैकएंड सर्वर से मिलने वाले एचटीटीपी रिस्पॉन्स का रिस्पॉन्स पेलोड साइज़, Apigee Edge की सीमा से ज़्यादा है.
ट्रेस
ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:
- ट्रेस सेशन को चालू करें. इसके अलावा, इनमें से कोई एक कार्रवाई करें:
502 Bad Gateway
गड़बड़ी आने तक इंतज़ार करें या- अगर समस्या को फिर से देखा जा सकता है, तो एपीआई कॉल करें और
502 Bad Gateway
गड़बड़ी फिर से सामने लाएं.
- सफल न होने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
- ट्रेस के अलग-अलग फ़ेज़ में नेविगेट करें और पता लगाएं कि गड़बड़ी कहां हुई थी.
नीचे बताए गए तरीके से टारगेट सर्वर से रिस्पॉन्स मिलने के ठीक बाद, फ़ेज़ गड़बड़ी पर जाएं:
ट्रेस में से गड़बड़ी के मानों को नोट करें:
- गड़बड़ी:
Body buffer overflow
- error.class:
com.apigee.errors.http.server.BadGateway
इससे पता चलता है कि पेलोड का साइज़ तय सीमा से ज़्यादा हो गया है. इस वजह से, जैसे ही Apigee Edge (मैसेज प्रोसेसर कॉम्पोनेंट), बैकएंड सर्वर से रिस्पॉन्स मिलता है, यह गड़बड़ी होती है.
- गड़बड़ी:
आपको क्लाइंट को भेजा गया जवाब फ़ेज़ में गड़बड़ी दिखेगी, जैसा कि यहां दिखाया गया है:
- ट्रेस में से गड़बड़ी की वैल्यू को नोट करें. ऊपर दिए गए सैंपल ट्रेस में ये चीज़ें शामिल हैं:
- गड़बड़ी:
502 Bad Gateway
- गड़बड़ी वाला कॉन्टेंट:
{"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
- गड़बड़ी:
अलग-अलग स्थितियों के लिए, टारगेट सर्वर से मिला रिस्पॉन्स चरण पर जाएं:
असंकुचित
स्थिति #1: बिना कंप्रेस किए गए फ़ॉर्म में भेजा गया रिस्पॉन्स पेलोड
ट्रेस में से गड़बड़ी के मानों को नोट करें:
- टारगेट सर्वर से मिला जवाब:
200 OK
- Content-Length (Content-Length सेक्शन से): ~11 एमबी
संपीडित
स्थिति #2: कंप्रेस किए गए फ़ॉर्म में पेलोड का अनुरोध भेजा गया
ट्रेस में से गड़बड़ी के मानों को नोट करें:
- टारगेट सर्वर से मिला जवाब:
200 OK
- कॉन्टेंट-कोड में बदलने का तरीका: अगर आपको रिस्पॉन्स हेडर सेक्शन में यह हेडर दिखता है, तो उस वैल्यू पर ध्यान दें. उदाहरण के लिए, इस उदाहरण में वैल्यू
gzip
है.
- टारगेट सर्वर से मिला जवाब:
जवाब का कॉन्टेंट सेक्शन में, मुख्य टेक्स्ट पर ध्यान दें:
{"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
ट्रेस में, AX (Analytics डेटा रिकॉर्ड किया गया) फ़ेज़ पर जाएं और उससे जुड़ी जानकारी देखने के लिए उस पर क्लिक करें.
- चरण की जानकारी में नीचे की ओर स्क्रोल करके, वैरिएबल की जानकारी सेक्शन पर जाएं और
target.received.content.length
की वैल्यू तय करें, जो यहां दी गई हैं:- रिस्पॉन्स पेलोड को बिना कंप्रेस किए फ़ॉर्मैट में भेजे जाने पर, उसका असल साइज़ और
- जब पेलोड को कंप्रेस किए गए फ़ॉर्मैट में भेजा जाता है, तब Apigee के ज़रिए डीकंप्रेस करने पर, रिस्पॉन्स पेलोड का साइज़. इस मामले में यह हमेशा, तय सीमा (10 एमबी) की वैल्यू के जैसी ही होगी.
असंकुचित
स्थिति #1: बिना कंप्रेस किए गए फ़ॉर्म में भेजा गया रिस्पॉन्स पेलोड
target.received.content.length की वैल्यू नोट करें:
अनुरोध के हेडर वैल्यू target.received.content.length ~11 एमबी संपीडित
स्थिति #2: कंप्रेस किए गए फ़ॉर्म में पेलोड का अनुरोध भेजा गया
target.received.content.length की वैल्यू नोट करें:
हेडर का अनुरोध करें वैल्यू target.received.content.length ~10 एमबी इस टेबल में बताया गया है कि Apigee से, target.received.content.length की वैल्यू के आधार पर दो स्थितियों में
502
गड़बड़ी क्यों मिलती है:स्थिति target.received.content.length की वैल्यू सफल न होने की वजह बिना कंप्रेस किए गए फ़ॉर्मैट में रिस्पॉन्स पेलोड ~11 एमबी साइज़ > 10 एमबी से ज़्यादा नहीं होना चाहिए कंप्रेस किए गए फ़ॉर्मैट में रिस्पॉन्स पेलोड ~10 एमबी डीकंप्रेस करते समय साइज़ तय सीमा से ज़्यादा हो गया है
NGINX
NGINX ऐक्सेस लॉग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:
- अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो एचटीटीपी
502
गड़बड़ियों के बारे में अहम जानकारी तय करने के लिए, NGINX ऐक्सेस लॉग का इस्तेमाल कर सकते हैं. NGINX ऐक्सेस लॉग देखें:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
कहां: ORG, ENV, और PORT# को असल वैल्यू से बदल दिया जाता है.
- यह देखने के लिए खोजें कि किसी खास अवधि के दौरान
502
में कोई गड़बड़ी तो नहीं है (अगर समस्या पहले हुई थी) या क्या502
के साथ कोई अनुरोध अब भी काम नहीं कर रहा है. - अगर आपको X-Apigee-fault-code की ऐसी कोई
502
गड़बड़ी दिखती है जोprotocol.http.TooBigBody
की वैल्यू से मेल खाती है, तो X-Apigee-fault-source की वैल्यू तय करें.NGINX ऐक्सेस लॉग से 502 गड़बड़ी का नमूना:
NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में X-Apigee- दबाकर गड़बड़ी का कोड और X-Apigee-fault-source की ये वैल्यू दी गई हैं:
रिस्पॉन्स हेडर वैल्यू X-Apigee-fault-code protocol.http.TooBigBody
X-Apigee-fault-source target
वजह: रिस्पॉन्स पेलोड का साइज़, तय सीमा से ज़्यादा है
संक्रमण की जांच
- एपीआई मॉनिटरिंग,ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करके मिली गड़बड़ी के लिए, फ़ॉल कोड, गड़बड़ी का सोर्स, और रिस्पॉन्स पेलोड का साइज़ तय करें. समस्या #1 में बताए गए तरीके से डाइग्नोज़ के सामान्य तरीके जानें.
- अगर गड़बड़ी सोर्स की वैल्यू
target
है, तो इससे पता चलता है कि टारगेट/बैकएंड सर्वर से Apigee को भेजा गया रिस्पॉन्स पेलोड साइज़, Apigee Edge में स्वीकार की गई सीमा से ज़्यादा है. - पहले चरण में दिए गए रिस्पॉन्स पेलोड के साइज़ की पुष्टि करें.
- अगर पेलोड का साइज़ 10 एमबी से ज़्यादा है, तो यही गड़बड़ी है.
- अगर पेलोड का साइज़ ~ 10 एमबी की अनुमति वाली सीमा है, तो हो सकता है कि रिस्पॉन्स पेलोड को कंप्रेस किए गए फ़ॉर्मैट में पास किया गया हो. वजह: डीकंप्रेशन के बाद रिस्पॉन्स पेलोड का साइज़, तय सीमा से ज़्यादा हो गया है पर जाएं.
- नीचे दिए गए तरीके से असली रिस्पॉन्स की जांच करके पुष्टि करें कि रिस्पॉन्स पेलोड साइज़
10 एमबी से ज़्यादा की है या नहीं:
- अगर आपके पास टारगेट/बैकएंड सर्वर से किए गए असल अनुरोध का ऐक्सेस नहीं है, तो रिज़ॉल्यूशन पर जाएं.
- अगर आपके पास टारगेट/बैकएंड सर्वर से किए गए असल अनुरोध का ऐक्सेस है, तो यह तरीका अपनाएं:
- अगर आप पब्लिक क्लाउड/प्राइवेट क्लाउड के उपयोगकर्ता हैं, तो बैकएंड सर्वर या किसी ऐसी मशीन से सीधे बैकएंड सर्वर को अनुरोध भेजें जहां से आपके पास बैकएंड सर्वर को अनुरोध करने की अनुमति हो.
- अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो आपके पास मैसेज प्रोसेसर की मदद से भी बैकएंड सर्वर को अनुरोध भेजने का विकल्प होता है.
- कॉन्टेंट की लंबाई वाले हेडर की जांच करके, रिस्पॉन्स में पास किए गए पेलोड के साइज़ की पुष्टि करें.
- अगर आपको लगता है कि पेलोड का साइज़ Apigee Edge में दी गई सीमा से ज़्यादा है, तो यही समस्या की वजह है.
बैकएंड सर्वर से मिले रिस्पॉन्स का सैंपल:
curl -v https://BACKENDSERVER-HOSTNAME/testfile
* About to connect() to 10.14.0.10 port 9000 (#0) * Trying 10.14.0.10... * Connected to 10.14.0.10 (10.148.0.10) port 9000 (#0) > GET /testfile HTTP/1.1 > User-Agent: curl/7.29.0 > Host: 10.14.0.10:9000 > Accept: */* > < HTTP/1.1 200 OK < Accept-Ranges: bytes < Content-Length: 11534336 < Content-Type: application/octet-stream < Last-Modified: Wed, 30 Jun 2021 08:18:02 GMT < Date: Wed, 30 Jun 2021 09:22:41 GMT < ----snipped---- <Response Body>
ऊपर दिए गए उदाहरण में,
Content-Length: 11534336 (which is ~11 MB)
को देखा जा सकता है, जिसकी वजह से यह गड़बड़ी हुई है, क्योंकि यह Apigee Edge में बताई गई सीमा से ज़्यादा है.
रिज़ॉल्यूशन
रिज़ॉल्यूशन देखें.
वजह: डीकंप्रेशन के बाद रिस्पॉन्स पेलोड का साइज़, तय सीमा से ज़्यादा हो गया है
अगर रिस्पॉन्स पेलोड कंप्रेस्ड फ़ॉर्मैट में भेजा गया है और रिस्पॉन्स हेडर
Content-Encoding
को gzip,
Apigee पर सेट किया गया है, तो रिस्पॉन्स
पेलोड को डिकंप्रेस कर दिया जाएगा. डीकंप्रेस करते समय, अगर Apigee को लगता है कि पेलोड का साइज़ Apigee Edge में मंज़ूर की गई सीमा से ज़्यादा है, तो यह आगे भी डीकंप्रेशन को बंद कर देता है और 502 Bad Gateway
और गड़बड़ी कोड protocol.http.TooBigBody
के साथ तुरंत जवाब देता है.
संक्रमण की जांच
- एपीआई मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करके मिली गड़बड़ी के लिए, फ़ॉल कोड, गलत सोर्स , और रिस्पॉन्स पेलोड का साइज़ तय करें. इसके बारे में स्थिति #2 में बताए गए सामान्य तरीके से बताया गया है.
- अगर फ़ॉल सोर्स की वैल्यू
target
है, तो इससे पता चलता है कि टारगेट/बैकएंड ऐप्लिकेशन से Apigee को भेजा गया रिस्पॉन्स पेलोड साइज़, Apigee Edge की अनुमति वाली सीमा से ज़्यादा है. - पहले चरण में दिए गए रिस्पॉन्स पेलोड के साइज़ की पुष्टि करें.
- अगर पेलोड का साइज़ 10 एमबी से ज़्यादा है, तो यही गड़बड़ी है.
- अगर पेलोड का साइज़ ~ 10 एमबी की अनुमति वाली सीमा में है, तो हो सकता है कि रिस्पॉन्स पेलोड को कंप्रेस किए गए फ़ॉर्मैट में पास किया गया हो. इस मामले में, कंप्रेस किए गए रिस्पॉन्स पेलोड के कंप्रेस किए गए साइज़ की जांच करें.
- यह पुष्टि की जा सकती है कि टारगेट/बैकएंड से मिला जवाब, कंप्रेस किए गए फ़ॉर्मैट में भेजा गया था और
कंप्रेस नहीं किया गया साइज़, तय सीमा से ज़्यादा था. इसके लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:
ट्रेस
ट्रेस टूल का इस्तेमाल करना:
- अगर आपने पूरे न होने वाले अनुरोध के लिए कोई ट्रेस कैप्चर किया है, तो
ट्रेस और
- में बताए गए तरीके देखें
- target.received.content.length की वैल्यू तय करना
- पुष्टि करें कि क्लाइंट के अनुरोध में
Content-Encrypt:
gzip
हेडर शामिल है या नहीं
- अगर target.received.content.length की वैल्यू 10 एमबी की तय सीमा के करीब है और रिस्पॉन्स हेडर target.received.content.length की वजह से ही यह गड़बड़ी हुई है.
वास्तविक अनुरोध
असल अनुरोध का इस्तेमाल करके:
- अगर आपके पास टारगेट/बैकएंड सर्वर से किए गए असल अनुरोध का ऐक्सेस नहीं है, तो रिज़ॉल्यूशन पर जाएं.
- अगर आपके पास टारगेट/बैकएंड सर्वर से किए गए असल अनुरोध का ऐक्सेस है, तो यह तरीका अपनाएं:
- रिस्पॉन्स में भेजे गए
Content-Encoding
हेडर के साथ-साथ, पास किए गए पेलोड के साइज़ की पुष्टि करें. - अगर आपको लगता है कि रिस्पॉन्स हेडर
Content-Encoding
gzip
पर सेट है और पेलोड का कंप्रेस किया गया साइज़, Apigee Edge में बताई गई सीमा से ज़्यादा है, तो यही इस गड़बड़ी की वजह है.बैकएंड सर्वर से मिला रिस्पॉन्स का सैंपल:
curl -v https://BACKENDSERVER-HOSTNAME/testzippedfile.gz
* About to connect() to 10.1.0.10 port 9000 (#0) * Trying 10.1.0.10... * Connected to 10.1.0.10 (10.1.0.10) port 9000 (#0) > GET /testzippedfile.gz HTTP/1.1 > User-Agent: curl/7.29.0 > Host: 10.1.0.10:9000 > Accept: */* > < HTTP/1.1 200 OK < Accept-Ranges: bytes < Content-Encoding: gzip < Content-Type: application/x-gzip < Last-Modified: Wed, 30 Jun 2021 08:18:02 GMT < Testheader: test < Date: Wed, 07 Jul 2021 10:14:16 GMT < Transfer-Encoding: chunked < ----snipped---- <Response Body>
ऊपर दिए गए मामले में,
Content-Encoding: gzip
हेडर भेजा जाता है और रिस्पॉन्स मेंtestzippedfile.gz
फ़ाइल का साइज़ तय सीमा से कम है. हालांकि, बिना कंप्रेस की गई फ़ाइलtestzippedfile
का साइज़ ~15 एमबी था.
- रिस्पॉन्स में भेजे गए
मैसेज प्रोसेसर के लॉग
Messages प्रोसेसर के लॉग का इस्तेमाल करना:
- अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो आपके पास मैसेज प्रोसेसर लॉग का इस्तेमाल करके, एचटीटीपी
502
गड़बड़ियों के बारे में अहम जानकारी तय करने का विकल्प होता है. मैसेज प्रोसेसर के लॉग की जांच करना
/opt/apigee/var/log/edge-message-processor/logs/system.log
यह देखने के लिए खोजें कि किसी खास अवधि के दौरान
502
में कोई गड़बड़ी तो नहीं है (अगर समस्या पहले हुई है) या क्या ऐसे अनुरोध हैं जो अब भी502
में नहीं दिख रहे हैं. इन खोज स्ट्रिंग का इस्तेमाल किया जा सकता है:grep -ri "chunkCount"
grep -ri "BadGateway: Body buffer overflow"
- आपको
system.log
से मिलती-जुलती लाइनें नीचे दिखेंगी (आपके मामले में,TotalRead
औरchunkCount
अलग हो सकते हैं):2021-07-07 09:40:47,012 NIOThread@7 ERROR HTTP.SERVICE - TrackingInputChannel.checkMessageBodyTooLarge() : Message is too large. TotalRead 10489856 chunkCount 2571 2021-07-07 09:40:47,012 NIOThread@7 ERROR HTTP.CLIENT - HTTPClient$Context.onInputException() : ClientInputChannel(ClientChannel[Connected: Remote:10.148.0.10:9000 Local:10.148.0.9:42240]@9155 useCount=1 bytesRead=0 bytesWritten=182 age=23ms lastIO=0ms isOpen=true).onExceptionRead exception: {} com.apigee.errors.http.server.BadGateway: Body buffer overflow 2021-07-07 09:40:47,012 NIOThread@7 ERROR ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() : AbstractResponseListener.onError(HTTPResponse@77cbd7c4, Body buffer overflow)
डीकंप्रेस करते समय, जब मैसेज प्रोसेसर यह तय करता है कि पढ़ी गई कुल बाइट 10 एमबी से ज़्यादा है, तो वह रुक जाता है और नीचे दी गई लाइन को प्रिंट कर देता है:
Message is too large. TotalRead 10489856 chunkCount 2571
इसका मतलब है कि रिस्पॉन्स पेलोड साइज़ 10 एमबी से ज़्यादा है और जब साइज़ 10 एमबी से ज़्यादा होने लगता है, तब Apigee गड़बड़ी दिखाता है. साथ ही, गड़बड़ी का कोड
protocol.http.TooBigBody
होता है
- अगर आपने पूरे न होने वाले अनुरोध के लिए कोई ट्रेस कैप्चर किया है, तो
ट्रेस और
रिज़ॉल्यूशन
साइज़ ठीक करें
पहला विकल्प [सुझाया गया]: टारगेट सर्वर ऐप्लिकेशन को ठीक करें, ताकि पेलोड का साइज़ Apigee की तय सीमा से ज़्यादा न भेजा जा सके
- किसी टारगेट सर्वर से रिस्पॉन्स / पेलोड का साइज़, सीमाओं में दी गई सीमा से ज़्यादा भेजने की वजह का विश्लेषण करें.
- अगर आपका इस्तेमाल ज़रूरी न हो, तो अपने टारगेट सर्वर ऐप्लिकेशन में बदलाव करें, ताकि यह रिस्पॉन्स / पेलोड का साइज़ तय सीमा से कम भेजे.
- अगर आपको ऐसा करना ज़रूरी है और आपको तय सीमा से ज़्यादा जवाब/पेलोड भेजना है, तो अगले विकल्पों पर जाएं.
हस्ताक्षर किए गए यूआरएल का पैटर्न
विकल्प #2 [सुझाया गया]: Apigee Java कॉलआउट में, साइन किए गए यूआरएल पैटर्न का इस्तेमाल करें
10 एमबी से बड़े पेलोड के लिए, Apigee, Apigee Java कॉलआउट में, साइन किए हुए यूआरएल पैटर्न का इस्तेमाल करने का सुझाव देता है. इसे GitHub पर एज कॉलआउट: साइन किया गया यूआरएल जनरेटर उदाहरण से दिखाया गया है.
स्ट्रीमिंग
तीसरा विकल्प: स्ट्रीमिंग की सुविधा का इस्तेमाल करना
अगर आपके एपीआई प्रॉक्सी को बहुत बड़े अनुरोधों और/या जवाबों को मैनेज करना है, तो आप Apigee में स्ट्रीमिंग की सुविधा चालू कर सकते हैं.
CwC
चौथा विकल्प: बफ़र सीमा को बढ़ाने के लिए CwC प्रॉपर्टी का इस्तेमाल करना
इस विकल्प का इस्तेमाल सिर्फ़ तब करना चाहिए, जब सुझाए गए किसी भी विकल्प का इस्तेमाल न किया जा सके. इसकी वजह यह है कि डिफ़ॉल्ट साइज़ को बढ़ाने पर, परफ़ॉर्मेंस से जुड़ी समस्याएं हो सकती हैं.
Apigee, एक CwC प्रॉपर्टी उपलब्ध कराता है. इसकी मदद से, अनुरोध और रिस्पॉन्स पेलोड के साइज़ की सीमा बढ़ाई जा सकती है. ज़्यादा जानकारी के लिए, राऊटर या मैसेज प्रोसेसर पर मैसेज के साइज़ की सीमा सेट करना देखें.
सीमाएं
Apigee को उम्मीद है कि क्लाइंट ऐप्लिकेशन और बैकएंड सर्वर,
Apigee Edge की सीमा में
Request/response size
के लिए बताई गई,
तय सीमा से ज़्यादा पेलोड साइज़ नहीं भेजेगा.
- अगर आप सार्वजनिक क्लाउड उपयोगकर्ता हैं, तो अनुरोध और रिस्पॉन्स
पेलोड साइज़ के लिए तय की गई ज़्यादा से ज़्यादा सीमा,
Apigee Edge की सीमाएं में
Request/response size
के मुताबिक बताई गई है. - अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो हो सकता है कि आपने अनुरोध और रिस्पॉन्स पेलोड साइज़ के लिए, डिफ़ॉल्ट तौर पर तय सीमा में बदलाव किया हो. भले ही, यह सुझाया गया तरीका न हो. मौजूदा सीमा कैसे देखें में दिए गए निर्देशों का पालन करके, अनुरोध वाले पेलोड के लिए साइज़ की ज़्यादा से ज़्यादा सीमा तय की जा सकती है.
मौजूदा सीमा कैसे देखें?
इस सेक्शन में, इस बात की पुष्टि करने का तरीका बताया गया है कि
HTTPResponse.body.buffer.limit
प्रॉपर्टी को, मैसेज
प्रोसेसर पर नई वैल्यू के साथ अपडेट किया गया है या नहीं.
Message प्रोसेसर मशीन पर,
/opt/apigee/edge-message- processor/conf
डायरेक्ट्री मेंHTTPResponse.body.buffer.limit
प्रॉपर्टी खोजें और देखें कि कौनसी वैल्यू सेट की गई है, जैसा कि नीचे दिखाया गया है:grep -ri "HTTPResponse.body.buffer.limit" /opt/apigee/edge-message-processor/conf
ऊपर दिए गए निर्देश से, सैंपल के तौर पर मिला नतीजा नीचे दिया गया है:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.body.buffer.limit=10m
ऊपर दिए गए उदाहरण के आउटपुट में, ध्यान दें कि
HTTPResponse.body.buffer.limit
प्रॉपर्टी कोhttp.properties
में,10m
की वैल्यू के साथ सेट किया गया है.इससे पता चलता है कि Private Cloud के लिए, Apigee में कॉन्फ़िगर किए गए अनुरोध पेलोड साइज़ की सीमा 10 एमबी है.
अगर आपको अब भी Apigee सहायता से कोई मदद चाहिए, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करनी होगी
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी यह जानकारी इकट्ठा करें और Apigee Edge की सहायता टीम से संपर्क करें:
अगर आप Public Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
502
गड़बड़ी को फिर से दिखाने के लिए, कंपलीट कर्ल कमांड का इस्तेमाल किया गया- एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
- पेलोड के साइज़ के साथ, टारगेट/बैकएंड सर्वर से मिले रिस्पॉन्स का पूरा आउटपुट
अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो यह जानकारी दें:
- असफल अनुरोधों के लिए देखा गया पूरा गड़बड़ी का मैसेज
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी बंडल
- काम न करने वाले एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
502
गड़बड़ी को फिर से दिखाने के लिए, कंपलीट कर्ल कमांड का इस्तेमाल किया गया- पेलोड के साइज़ के साथ, टारगेट/बैकएंड सर्वर से मिले रिस्पॉन्स का पूरा आउटपुट
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