502 गलत गेटवे - TOBigHeaders

आपको 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 के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता

गड़बड़ी की जांच करने के सामान्य तरीके

इस गड़बड़ी का पता लगाने के लिए, इनमें से किसी एक टूल/तकनीक का इस्तेमाल करें:

एपीआई मॉनिटरिंग

एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:

  1. वाले उपयोगकर्ता के तौर पर, Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में साइन इन करें भूमिका होनी चाहिए.
  2. उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.

  3. विश्लेषण करें > एपीआई मॉनिटरिंग > पेज की जांच करें.
  4. वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखी थीं.
  5. गड़बड़ी वाले कोड को सटीक बनाने के लिए, प्रॉक्सी फ़िल्टर को चुना जा सकता है.
  6. समय के हिसाब से गड़बड़ी कोड दिखाएं.
  7. वह सेल चुनें जिसमें गड़बड़ी कोड protocol.http.TooBigHeaders है नीचे दी गई जानकारी देखें:

    ( बड़ी इमेज देखें)

  8. आपको गड़बड़ी के कोड के बारे में जानकारी दिखेगी protocol.http.TooBigHeaders जैसा कि नीचे दिखाया गया है:

    ( बड़ी इमेज देखें)

  9. लॉग देखें पर क्लिक करें और फ़ेल हो चुके अनुरोध की पंक्ति को बड़ा करें.

    ( बड़ी इमेज देखें)

  10. लॉग विंडो में जाकर, यह जानकारी देखें:
    • स्टेटस कोड: 502
    • गलत सोर्स: target
    • गलत कोड: protocol.http.TooBigHeaders.
  11. अगर गलत सोर्स की वैल्यू target और Fault है कोड की वैल्यू protocol.http.TooBigHeaders है, जो बताता है कि टारगेट/ बैकएंड सर्वर से मिले एचटीटीपी रिस्पॉन्स में ऐसे हेडर होते हैं जिनका साइज़ बड़ा होता है यह Apigee Edge में स्वीकार की गई सीमा से ज़्यादा है.

ट्रेस करने वाला टूल

  1. ट्रेस सेशन चालू करना साथ ही:
    1. 502 Bad Gateway गड़बड़ी आने तक इंतज़ार करें, या
    2. अगर समस्या को दोबारा हल किया जा सकता है, तो एपीआई कॉल करें और 502 Bad Gateway गड़बड़ी देखें.
  2. पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
  3. ट्रेस के अलग-अलग फ़ेज़ पर नेविगेट करें और गड़बड़ी का पता लगाएं हुआ.
  4. आम तौर पर, आपको यह गड़बड़ी Error नाम के फ़्लो में टारगेट सर्वर को अनुरोध भेजा गया चरण, जैसा कि नीचे दिखाया गया है:

    ( बड़ी इमेज देखें)

    ट्रेस में दी गई गड़बड़ी की वैल्यू नोट करें:

    • गड़बड़ी: response headers size exceeding 25,600
    • error.class: com.apigee.errors.http.server.BadGateway

    इससे पता चलता है कि Apigee Edge (मैसेज प्रोसेसर कॉम्पोनेंट) गड़बड़ी को इस तरह दिखाता है हेडर साइज़ की वजह से, बैकएंड सर्वर से रिस्पॉन्स मिलने के तुरंत बाद तय सीमा से ज़्यादा है.

  5. आपको क्लाइंट को भेजा गया जवाब में गड़बड़ी दिखेगी Apigee Edge से भेजा गया गड़बड़ी का जवाब, जैसा कि यहां दिखाया गया है:

    ( बड़ी इमेज देखें)

  6. ट्रेस में जाकर गड़बड़ी की वैल्यू नोट करें. ऊपर दिया गया सैंपल ट्रेस दिखाता है:
    • गड़बड़ी: 502 Bad Gateway.
    • गड़बड़ी का कॉन्टेंट: {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
  7. ट्रेस में, 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 ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. अगर आप निजी Cloud उपयोगकर्ता हैं, तो NGINX ऐक्सेस लॉग का इस्तेमाल इन कामों के लिए किया जा सकता है एचटीटीपी 502 Bad Gateway के बारे में खास जानकारी तय करें.
  2. NGINX ऐक्सेस लॉग देखें:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    कहां: ORG, ENV, और PORT# को असल वैल्यू से बदल दिया जाता है.

  3. यह देखने के लिए खोजें कि क्या 502 गड़बड़ी हुई तय अवधि के दौरान गड़बड़ी कोड protocol.http.TooBigHeaders के साथ (अगर समस्या पहले हुई है) या कोई अनुरोध अब भी पूरा नहीं हो पा रहा है 502.
  4. अगर आपको 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

वजह: रिस्पॉन्स में हेडर का साइज़, तय सीमा से ज़्यादा है

संक्रमण की जांच

  1. इसके लिए गलत कोड, गलत सोर्स, और रिस्पॉन्स पेलोड का साइज़ तय करें एपीआई मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करने पर मिली गड़बड़ी. इसकी जानकारी यहां दी गई है गड़बड़ी की जानकारी पाने के सामान्य तरीके.
  2. अगर गलत सोर्स की वैल्यू target है, तो यह दिखाता है कि टारगेट/बैकएंड सर्वर से Apigee को भेजे गए रिस्पॉन्स में ऐसे हेडर हैं जिनका साइज़ बड़ा है यह Apigee Edge में दी गई सीमा से ज़्यादा है.
  3. आपके पास यह पुष्टि करने की सुविधा है कि टारगेट/बैकएंड से मिले रिस्पॉन्स में ऐसे हेडर हैं जिनका साइज़ नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करके, तय सीमा से ज़्यादा है:

    गड़बड़ी का मैसेज

    गड़बड़ी के मैसेज का इस्तेमाल करके पुष्टि करने के लिए:

    अगर आपके पास Apigee Edge से मिले, गड़बड़ी के पूरे मैसेज का ऐक्सेस है, तो faultstring देखें. faultstring से पता चलता है कि रिस्पॉन्स हेडर का साइज़, तय सीमा से ज़्यादा है.

    गड़बड़ी के मैसेज का उदाहरण:

    "faultstring":"response headers size exceeding 25,600"
    

    ऊपर दिए गए गड़बड़ी के मैसेज में, faultstring में ध्यान दें कि रिस्पॉन्स में ऐसे हेडर हैं जिनका कुल साइज़ तय की गई सीमा से ज़्यादा है.

    असल अनुरोध

    असल अनुरोध का इस्तेमाल करके पुष्टि करने के लिए:

    अगर आपके पास टारगेट/बैकएंड सर्वर से किए गए असल अनुरोध का ऐक्सेस है, तो इसके बाद, यह तरीका अपनाएं:

    1. अगर आप पब्लिक क्लाउड/प्राइवेट क्लाउड के उपयोगकर्ता हैं, तो अनुरोध करें सीधे बैकएंड सर्वर से या किसी अन्य सर्वर से मशीन से जहां से बैकएंड में अनुरोध करने की अनुमति हो सर्वर.
    2. अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो किसी एक मैसेज प्रोसेसर का बैकएंड सर्वर भी भेजता है.
    3. बैकएंड सर्वर से मिले रिस्पॉन्स की और खास तौर पर जांच करें रिस्पॉन्स में पास किए गए हेडर के कुल साइज़ की गणना करें और उसकी पुष्टि करें.
    4. अगर आपको रिस्पॉन्स पेलोड में हेडर का साइज़ दिखे 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 में ऑफ़र की अनुमति है.

    1. मैसेज प्रोसेसर के लॉग देखें:

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    2. यह देखने के लिए खोज करें कि क्या किसी विशेष इवेंट के दौरान कोई 502 गड़बड़ी हुई है अवधि (अगर समस्या पहले हुई है) या कोई अनुरोध है 502 के साथ अब भी काम नहीं कर रहा है. इस खोज स्ट्रिंग का इस्तेमाल किया जा सकता है:
      grep -ri "response headers size exceeding"
      
      अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    3. आपको 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)
      
      अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    4. जैसे ही मैसेज प्रोसेसर को बैकएंड/टारगेट से जवाब मिलता है सर्वर को पता चलता है कि हेडर का कुल साइज़ 25 केबी से ज़्यादा है, यह रुक जाता है और गड़बड़ी की जानकारी देता है:

      response headers size exceeding 25,600

      इसका मतलब है कि कुल हेडर का साइज़ 25 केबी और Apigee से ज़्यादा है जब गड़बड़ी कोड के साथ आकार 25 केबी की सीमा से ज़्यादा होने लगता है, तो गड़बड़ी होती है protocol.http.TooBigHeaders के तौर पर

रिज़ॉल्यूशन

साइज़ ठीक करें

विकल्प #1 [सुझाया गया]: टारगेट सर्वर ऐप्लिकेशन को ठीक करें, ताकि हेडर का साइज़ न भेजा जाए Apigee की सीमा पार करना

  1. यह विश्लेषण करें कि चुनिंदा टारगेट सर्वर, रिस्पॉन्स हेडर के साइज़ को ज़्यादा भेज सके सीमाओं में बताई गई सीमा से ज़्यादा है.
  2. अगर यह ज़रूरी नहीं है, तो अपने बैकएंड सर्वर ऐप्लिकेशन में बदलाव करें, ताकि यह वे रिस्पॉन्स हेडर जिनका साइज़, तय की गई सीमा से कम है Apigee Edge.
  3. देखें कि हेडर की जानकारी, जवाब के मुख्य हिस्से के तौर पर भेजी जा सकती है या नहीं.
  4. अगर संभव हो, तो ऐसी कोई भी बड़ी जानकारी भेजें, जिसे आप हेडर होता है. इससे यह पक्का होगा कि आपसे मिले जवाब को पार नहीं किया जाएगा हेडर की सीमा.

CwC

दूसरा विकल्प : रिस्पॉन्स हेडर के साइज़ की सीमा बढ़ाने के लिए, CwC प्रॉपर्टी का इस्तेमाल करना

Apigee, डेवलपर को CwC प्रॉपर्टी इस्तेमाल करके रिस्पॉन्स हेडर के साइज़ की सीमा बढ़ाई जा सकती है. ज़्यादा जानकारी के लिए देखें मैसेज प्रोसेसर के लिए सीमाएं कॉन्फ़िगर करना

सीमाएं

Apigee को उम्मीद है कि क्लाइंट ऐप्लिकेशन और बैकएंड सर्वर नहीं भेजे जाएंगे हेडर का साइज़, दस्तावेज़ के तौर पर स्वीकार की गई सीमा से ज़्यादा है में अनुरोध/रिस्पॉन्स हेडर साइज़ के लिए Apigee Edge की सीमाएं.

  1. अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो अनुरोध और जवाब हेडर का साइज़, अनुरोध/रिस्पॉन्स हेडर साइज़ के लिए दिए गए दस्तावेज़ के मुताबिक Apigee Edge की सीमाएं.
  2. अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो हो सकता है कि आपने डिफ़ॉल्ट सेटिंग में बदलाव किया हो अनुरोध और जवाब के हेडर के साइज़ की सीमा (भले ही यह सुझाया गया तरीका न हो). रिस्पॉन्स हेडर के साइज़ की सीमा तय करने के लिए, यहां दिए गए निर्देशों का पालन करें मौजूदा सीमा देखने का तरीका.

मौजूदा सीमा कैसे देखें?

इस सेक्शन में, प्रॉपर्टी HTTPResponse.headers.limit की पुष्टि करने का तरीका बताया गया है को मैसेज प्रोसेसर पर एक नई वैल्यू के साथ अपडेट किया गया है.

  1. मैसेज प्रोसेसर मशीन पर, प्रॉपर्टी खोजें HTTPResponse.headers.limit /opt/apigee/edge-message-processor/conf डायरेक्ट्री और इसे चुनें नीचे दिखाए गए तरीके से देखें कि कौनसा मान सेट किया गया है:
    grep -ri "HTTPResponse.headers.limit" /opt/apigee/edge-message-processor/conf
    
  2. ऊपर दिए गए निर्देश का सैंपल नतीजा कुछ इस तरह है:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.headers.limit=25k
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  3. ऊपर दिए गए उदाहरण के तौर पर, ध्यान दें कि प्रॉपर्टी 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