आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को 502 Bad Gateway
का एचटीटीपी स्टेटस कोड मिलता है:
एपीआई के रिस्पॉन्स के तौर पर गड़बड़ी का कोड protocol.http.TooBigHeaders
कॉल.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 502 Bad Gateway
इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:
{ "fault":{ "faultstring":"response headers size exceeding 25,600", "detail":{ "errorcode":"protocol.http.TooBigHeaders" } } }
संभावित कारण
यह गड़बड़ी तब होती है, जब टारगेट/बैकएंड से भेजे गए हेडर का कुल साइज़ एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, Apigee Edge के लिए सर्वर, तय की गई सीमा से बड़ा है Apigee Edge में ऑफ़र की अनुमति है.
इस गड़बड़ी की ये वजहें हो सकती हैं:
वजह | ब्यौरा | इसके लिए लागू होने वाले, समस्या हल करने के निर्देश |
---|---|---|
जवाब में हेडर का साइज़, तय सीमा से ज़्यादा है | किसी खास हेडर का हेडर साइज़ या सभी हेडर के साइज़ का योग Apigee Edge को एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर टारगेट/बैकएंड सर्वर से भेजे गए हेडर Apigee Edge में दी गई सीमा से ज़्यादा है. | Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता |
गड़बड़ी की जांच करने के सामान्य तरीके
इस गड़बड़ी का पता लगाने के लिए, इनमें से किसी एक टूल/तकनीक का इस्तेमाल करें:
एपीआई मॉनिटरिंग
एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:
- वाले उपयोगकर्ता के तौर पर, Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में साइन इन करें भूमिका होनी चाहिए.
उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.
- विश्लेषण करें > एपीआई मॉनिटरिंग > पेज की जांच करें.
- वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखी थीं.
- गड़बड़ी वाले कोड को सटीक बनाने के लिए, प्रॉक्सी फ़िल्टर को चुना जा सकता है.
- समय के हिसाब से गड़बड़ी कोड दिखाएं.
वह सेल चुनें जिसमें गड़बड़ी कोड
protocol.http.TooBigHeaders
है नीचे दी गई जानकारी देखें:आपको गड़बड़ी के कोड के बारे में जानकारी दिखेगी
protocol.http.TooBigHeaders
जैसा कि नीचे दिखाया गया है:लॉग देखें पर क्लिक करें और फ़ेल हो चुके अनुरोध की पंक्ति को बड़ा करें.
- लॉग विंडो में जाकर, यह जानकारी देखें:
- स्टेटस कोड:
502
- गलत सोर्स:
target
- गलत कोड:
protocol.http.TooBigHeaders
.
- स्टेटस कोड:
- अगर गलत सोर्स की वैल्यू
target
और Fault है कोड की वैल्यूprotocol.http.TooBigHeaders
है, जो बताता है कि टारगेट/ बैकएंड सर्वर से मिले एचटीटीपी रिस्पॉन्स में ऐसे हेडर होते हैं जिनका साइज़ बड़ा होता है यह Apigee Edge में स्वीकार की गई सीमा से ज़्यादा है.
ट्रेस करने वाला टूल
- ट्रेस सेशन चालू करना
साथ ही:
502 Bad Gateway
गड़बड़ी आने तक इंतज़ार करें, या- अगर समस्या को दोबारा हल किया जा सकता है, तो एपीआई कॉल करें और
502 Bad Gateway
गड़बड़ी देखें.
- पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
- ट्रेस के अलग-अलग फ़ेज़ पर नेविगेट करें और गड़बड़ी का पता लगाएं हुआ.
आम तौर पर, आपको यह गड़बड़ी Error नाम के फ़्लो में टारगेट सर्वर को अनुरोध भेजा गया चरण, जैसा कि नीचे दिखाया गया है:
ट्रेस में दी गई गड़बड़ी की वैल्यू नोट करें:
- गड़बड़ी:
response headers size exceeding 25,600
- error.class:
com.apigee.errors.http.server.BadGateway
इससे पता चलता है कि Apigee Edge (मैसेज प्रोसेसर कॉम्पोनेंट) गड़बड़ी को इस तरह दिखाता है हेडर साइज़ की वजह से, बैकएंड सर्वर से रिस्पॉन्स मिलने के तुरंत बाद तय सीमा से ज़्यादा है.
- गड़बड़ी:
आपको क्लाइंट को भेजा गया जवाब में गड़बड़ी दिखेगी Apigee Edge से भेजा गया गड़बड़ी का जवाब, जैसा कि यहां दिखाया गया है:
- ट्रेस में जाकर गड़बड़ी की वैल्यू नोट करें. ऊपर दिया गया सैंपल ट्रेस दिखाता है:
- गड़बड़ी:
502 Bad Gateway
. - गड़बड़ी का कॉन्टेंट:
{"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
- गड़बड़ी:
ट्रेस में, AX (Analytics का डेटा रिकॉर्ड किया गया) फ़ेज़ पर जाएं और संबंधित विवरण देखने के लिए उस पर क्लिक करें.
नीचे दी गई वैल्यू का ध्यान रखें:
गड़बड़ी के हेडर मान X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source target
गड़बड़ी का कॉन्टेंट: मुख्य हिस्सा {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
NGINX
NGINX ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:
- अगर आप निजी Cloud उपयोगकर्ता हैं, तो NGINX ऐक्सेस लॉग का इस्तेमाल इन कामों के लिए किया जा सकता है
एचटीटीपी
502 Bad Gateway
के बारे में खास जानकारी तय करें. NGINX ऐक्सेस लॉग देखें:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
कहां: ORG, ENV, और PORT# को असल वैल्यू से बदल दिया जाता है.
- यह देखने के लिए खोजें कि क्या
502
गड़बड़ी हुई तय अवधि के दौरान गड़बड़ी कोडprotocol.http.TooBigHeaders
के साथ (अगर समस्या पहले हुई है) या कोई अनुरोध अब भी पूरा नहीं हो पा रहा है502
. अगर आपको X-Apigee-fault-कोड में कोई
502
गड़बड़ी मिलती है वैल्यू काprotocol.http.TooBigHeaders
से मिलान करें, फिर तय करें X-Apigee-fault-source. की वैल्यू है.NGINX ऐक्सेस लॉग में 502 गड़बड़ी का नमूना:
NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में, X-Apigee-fault-code और X-Apigee-fault-source:
गड़बड़ी के हेडर मान X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source target
वजह: रिस्पॉन्स में हेडर का साइज़, तय सीमा से ज़्यादा है
संक्रमण की जांच
- इसके लिए गलत कोड, गलत सोर्स, और रिस्पॉन्स पेलोड का साइज़ तय करें एपीआई मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करने पर मिली गड़बड़ी. इसकी जानकारी यहां दी गई है गड़बड़ी की जानकारी पाने के सामान्य तरीके.
- अगर गलत सोर्स की वैल्यू
target
है, तो यह दिखाता है कि टारगेट/बैकएंड सर्वर से Apigee को भेजे गए रिस्पॉन्स में ऐसे हेडर हैं जिनका साइज़ बड़ा है यह Apigee Edge में दी गई सीमा से ज़्यादा है. - आपके पास यह पुष्टि करने की सुविधा है कि टारगेट/बैकएंड से मिले रिस्पॉन्स में ऐसे हेडर हैं जिनका साइज़
नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करके, तय सीमा से ज़्यादा है:
गड़बड़ी का मैसेज
गड़बड़ी के मैसेज का इस्तेमाल करके पुष्टि करने के लिए:
अगर आपके पास Apigee Edge से मिले, गड़बड़ी के पूरे मैसेज का ऐक्सेस है, तो
faultstring
देखें.faultstring
से पता चलता है कि रिस्पॉन्स हेडर का साइज़, तय सीमा से ज़्यादा है.गड़बड़ी के मैसेज का उदाहरण:
"faultstring":"response headers size exceeding 25,600"
ऊपर दिए गए गड़बड़ी के मैसेज में,
faultstring
में ध्यान दें कि रिस्पॉन्स में ऐसे हेडर हैं जिनका कुल साइज़ तय की गई सीमा से ज़्यादा है.असल अनुरोध
असल अनुरोध का इस्तेमाल करके पुष्टि करने के लिए:
अगर आपके पास टारगेट/बैकएंड सर्वर से किए गए असल अनुरोध का ऐक्सेस है, तो इसके बाद, यह तरीका अपनाएं:
- अगर आप पब्लिक क्लाउड/प्राइवेट क्लाउड के उपयोगकर्ता हैं, तो अनुरोध करें सीधे बैकएंड सर्वर से या किसी अन्य सर्वर से मशीन से जहां से बैकएंड में अनुरोध करने की अनुमति हो सर्वर.
- अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो किसी एक मैसेज प्रोसेसर का बैकएंड सर्वर भी भेजता है.
- बैकएंड सर्वर से मिले रिस्पॉन्स की और खास तौर पर जांच करें रिस्पॉन्स में पास किए गए हेडर के कुल साइज़ की गणना करें और उसकी पुष्टि करें.
अगर आपको रिस्पॉन्स पेलोड में हेडर का साइज़ दिखे Apigee Edge में दी गई सीमा से ज़्यादा है, तो यह समस्या की वजह है.
टारगेट सर्वर से मिले रिस्पॉन्स का सैंपल:
curl -v https://TARGET_SERVER_HOST/test
* 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 /test 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-Length: 0 < Content-Type: text/plain; charset=utf-8 < Last-Modified: Tue, 20 Jul 2021 09:23:56 GMT
< Testheader1: XVlBzgba—-<snipped>---THctcuAx < Testheader2: hxKQFDaFpLSj—-<snipped>---FbcXoEFfRsWxP
< Date: Fri, 23 Jul 2021 09:51:22 GMT < * Connection #0 to host 10.1.0.10 left intactऊपर दिए गए उदाहरण में,
Testheader1
औरTestheader2
का साइज़ ज़्यादा है. यही वजह है इस गड़बड़ी को ठीक करना होगा, क्योंकि यह तय की गई सीमा से ज़्यादा है Apigee Edge.
मैसेज प्रोसेसर के लॉग
मैसेज प्रोसेसर के लॉग का इस्तेमाल करके पुष्टि करने के लिए:
अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो मैसेज प्रोसेसर के लॉग का इस्तेमाल इन कामों के लिए किया जा सकता है पुष्टि करें कि रिस्पॉन्स हेडर का साइज़, तय सीमा से ज़्यादा हो गया हो Apigee Edge में ऑफ़र की अनुमति है.
मैसेज प्रोसेसर के लॉग देखें:
/opt/apigee/var/log/edge-message-processor/logs/system.log
- यह देखने के लिए खोज करें कि क्या किसी विशेष इवेंट के दौरान कोई
502
गड़बड़ी हुई है अवधि (अगर समस्या पहले हुई है) या कोई अनुरोध है502
के साथ अब भी काम नहीं कर रहा है. इस खोज स्ट्रिंग का इस्तेमाल किया जा सकता है:grep -ri "response headers size exceeding"
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है - आपको
system.log
से मिलती-जुलती लाइनें मिलेंगी. आपके मामले में, रिस्पॉन्स हेडर का साइज़ अलग-अलग हो सकता है:2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest rev:1 messageid:r23ijb1b-1 NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context$3.onException() : ClientChannel[Connected: Remote:3.7.1.1:9000 Local:192.168.2.1:56098]@8414 useCount=1 bytesRead=0 bytesWritten=207 age=640ms lastIO=0ms isOpen=true.onExceptionRead exception: {} com.apigee.errors.http.server.BadGateway: response headers size exceeding 25,600 2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest rev:1 messageid:r23ijb1b-1 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() : AbstractResponseListener.onError (HTTPResponse@31f3ef88, response headers size exceeding 25,600)
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है -
जैसे ही मैसेज प्रोसेसर को बैकएंड/टारगेट से जवाब मिलता है सर्वर को पता चलता है कि हेडर का कुल साइज़ 25 केबी से ज़्यादा है, यह रुक जाता है और गड़बड़ी की जानकारी देता है:
response headers size exceeding 25,600
इसका मतलब है कि कुल हेडर का साइज़ 25 केबी और Apigee से ज़्यादा है जब गड़बड़ी कोड के साथ आकार 25 केबी की सीमा से ज़्यादा होने लगता है, तो गड़बड़ी होती है
protocol.http.TooBigHeaders
के तौर पर
रिज़ॉल्यूशन
साइज़ ठीक करें
विकल्प #1 [सुझाया गया]: टारगेट सर्वर ऐप्लिकेशन को ठीक करें, ताकि हेडर का साइज़ न भेजा जाए Apigee की सीमा पार करना
- यह विश्लेषण करें कि चुनिंदा टारगेट सर्वर, रिस्पॉन्स हेडर के साइज़ को ज़्यादा भेज सके सीमाओं में बताई गई सीमा से ज़्यादा है.
- अगर यह ज़रूरी नहीं है, तो अपने बैकएंड सर्वर ऐप्लिकेशन में बदलाव करें, ताकि यह वे रिस्पॉन्स हेडर जिनका साइज़, तय की गई सीमा से कम है Apigee Edge.
- देखें कि हेडर की जानकारी, जवाब के मुख्य हिस्से के तौर पर भेजी जा सकती है या नहीं.
- अगर संभव हो, तो ऐसी कोई भी बड़ी जानकारी भेजें, जिसे आप हेडर होता है. इससे यह पक्का होगा कि आपसे मिले जवाब को पार नहीं किया जाएगा हेडर की सीमा.
CwC
दूसरा विकल्प : रिस्पॉन्स हेडर के साइज़ की सीमा बढ़ाने के लिए, CwC प्रॉपर्टी का इस्तेमाल करना
Apigee, डेवलपर को CwC प्रॉपर्टी इस्तेमाल करके रिस्पॉन्स हेडर के साइज़ की सीमा बढ़ाई जा सकती है. ज़्यादा जानकारी के लिए देखें मैसेज प्रोसेसर के लिए सीमाएं कॉन्फ़िगर करना
सीमाएं
Apigee को उम्मीद है कि क्लाइंट ऐप्लिकेशन और बैकएंड सर्वर नहीं भेजे जाएंगे हेडर का साइज़, दस्तावेज़ के तौर पर स्वीकार की गई सीमा से ज़्यादा है में अनुरोध/रिस्पॉन्स हेडर साइज़ के लिए Apigee Edge की सीमाएं.
- अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो अनुरोध और जवाब हेडर का साइज़, अनुरोध/रिस्पॉन्स हेडर साइज़ के लिए दिए गए दस्तावेज़ के मुताबिक Apigee Edge की सीमाएं.
- अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो हो सकता है कि आपने डिफ़ॉल्ट सेटिंग में बदलाव किया हो अनुरोध और जवाब के हेडर के साइज़ की सीमा (भले ही यह सुझाया गया तरीका न हो). रिस्पॉन्स हेडर के साइज़ की सीमा तय करने के लिए, यहां दिए गए निर्देशों का पालन करें मौजूदा सीमा देखने का तरीका.
मौजूदा सीमा कैसे देखें?
इस सेक्शन में, प्रॉपर्टी HTTPResponse.headers.limit
की पुष्टि करने का तरीका बताया गया है
को मैसेज प्रोसेसर पर एक नई वैल्यू के साथ अपडेट किया गया है.
- मैसेज प्रोसेसर मशीन पर, प्रॉपर्टी खोजें
HTTPResponse.headers.limit
/opt/apigee/edge-message-processor/conf
डायरेक्ट्री और इसे चुनें नीचे दिखाए गए तरीके से देखें कि कौनसा मान सेट किया गया है:grep -ri "HTTPResponse.headers.limit" /opt/apigee/edge-message-processor/conf
- ऊपर दिए गए निर्देश का सैंपल नतीजा कुछ इस तरह है:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.headers.limit=25k
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ऊपर दिए गए उदाहरण के तौर पर, ध्यान दें कि प्रॉपर्टी
HTTPResponse.headers.limit
http.properties
में को25k
मान के साथ सेट किया गया है.इससे पता चलता है कि Apigee for Private में कॉन्फ़िगर किए गए रिस्पॉन्स पेलोड साइज़ की सीमा क्लाउड का साइज़ 25 केबी है.
अगर आपको अब भी Apigee की सहायता टीम से कोई मदद चाहिए, तो यहां जाएं गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है
गड़बड़ी की नीचे दी गई जानकारी इकट्ठा करें. इसके बाद, Apigee Edge की सहायता टीम से संपर्क करें:
अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
502
गड़बड़ी को ठीक करने के लिए इस्तेमाल किए गएcurl
निर्देश को पूरा करें- एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
- हेडर के साइज़ के साथ टारगेट/बैकएंड सर्वर से मिले रिस्पॉन्स का आउटपुट पूरा करें
अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:
- पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी बंडल
- पूरे न हो पाने वाले एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
502
गड़बड़ी को ठीक करने के लिए इस्तेमाल किए गएcurl
निर्देश को पूरा करें- हेडर के साइज़ के साथ टारगेट/बैकएंड सर्वर से मिले रिस्पॉन्स का आउटपुट पूरा करें
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