503 सेवा उपलब्ध नहीं है - बैकएंड सर्वर, समय से पहले बंद हो जाए

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

समस्या का ब्यौरा

क्लाइंट ऐप्लिकेशन को इस मैसेज के साथ एचटीटीपी रिस्पॉन्स स्टेटस 503 मिलता है एपीआई प्रॉक्सी कॉल के बाद Service Unavailable.

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

क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:

HTTP/1.1 503 Service Unavailable

इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
       }
    }
}

संभावित वजहें

वजह ब्यौरा इसके लिए लागू होने वाले, समस्या हल करने के निर्देश
टारगेट सर्वर, कनेक्शन को समय से पहले बंद कर देता है जब मैसेज प्रोसेसर स्थिर हो, तब टारगेट सर्वर कनेक्शन को समय से पहले खत्म कर देता है अनुरोध पेलोड भेज रहे हैं. Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता

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

पूरे न हो पाने वाले अनुरोध का मैसेज आईडी तय करना

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

ट्रेस टूल का इस्तेमाल करके, पूरे न हो पाने वाले अनुरोध का मैसेज आईडी पता करने के लिए:

  1. अगर समस्या अब भी मौजूद है, तो को चालू करें जिस एपीआई पर असर हुआ है उसके लिए ट्रेस सेशन.
  2. एपीआई कॉल करें और समस्या के बारे में बताएं - 503 Service Unavailable messaging.adaptors.http.flow.ServiceUnavailable. गड़बड़ी कोड के साथ
  3. पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें.
  4. AX फ़ेज़ पर जाएं और मैसेज आईडी तय करें (X-Apigee.Message-ID) नीचे की ओर स्क्रोल करके चरण की जानकारी सेक्शन, जैसा कि यहां दिए गए डायग्राम में दिखाया गया है.

    चरण की जानकारी वाले सेक्शन में मैसेज आईडी

NGINX ऐक्सेस लॉग

NGINX ऐक्सेस लॉग का इस्तेमाल करके, पूरे न हो पाने वाले अनुरोध का मैसेज आईडी तय करने के लिए:

503 गड़बड़ियों के लिए मैसेज आईडी तय करने के लिए, आप NGINX ऐक्सेस लॉग भी देख सकते हैं. यह खास तौर पर तब फ़ायदेमंद होता है, जब यह समस्या पहले हुई हो या बीच-बीच में समस्या होती हो और आप यूज़र इंटरफ़ेस (यूआई) में ट्रेस को कैप्चर नहीं कर पा रहे हैं. NGINX ऐक्सेस लॉग से यह जानकारी पता लगाने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. NGINX ऐक्सेस लॉग देखें: (/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log)
  2. खोजें कि किसी खास समयावधि के दौरान, किसी एपीआई प्रॉक्सी के लिए 503 गड़बड़ियां हुई हैं या नहीं (अगर समस्या पहले हुई है) या 503 के साथ अब भी कोई अनुरोध पूरा नहीं हो पा रहा है.
  3. अगर X-Apigee-fault-code Messaging.adapters.http.flow.ServiceUnavailable में कोई 503 गड़बड़ी है, नीचे दिए गए उदाहरण में दिखाए गए एक या ज़्यादा अनुरोधों के लिए मैसेज आईडी को नोट करें:

    503 गड़बड़ी दिखाने वाली सैंपल एंट्री

    स्टेटस कोड, मैसेज आईडी, गड़बड़ी का सोर्स, और गड़बड़ी कोड दिखाने वाली सैंपल एंट्री

वजह: टारगेट सर्वर, समय से पहले कनेक्शन बंद कर देता है

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

  1. अगर आप सार्वजनिक क्लाउड या प्राइवेट क्लाउड के उपयोगकर्ता हैं, तो:
    1. ट्रेस टूल का इस्तेमाल करें (जैसा कि डाइग्नोस्टिक्स के सामान्य चरणों में बताया गया है) और पुष्टि करें कि Analytics का डेटा रिकॉर्ड किया गया पैनल में आपने ये दोनों चीज़ें सेट कर रखी हैं:
      • X-Apigee.fault-code: messaging.adaptors.http.flow.ServiceUnavailable
      • X-Apigee.fault-source: target

      alt_text

    2. ट्रेस टूल का इस्तेमाल करें (जैसा कि डाइग्नोस्टिक्स के सामान्य चरणों में बताया गया है) इसके बाद, पुष्टि करें कि गड़बड़ी वाले पैनल में, ये दोनों वैल्यू सेट हों. TARGET_REQ_FLOW state प्रॉपर्टी:
      • error.class: com.apigee.errors.http.server.ServiceUnavailableException
      • error.cause: Broken pipe

      alt_text

    3. आगे की जांच के लिए, tcpdump का इस्तेमाल करना पर जाएं.
  2. अगर आप प्राइवेट क्लाउड के उपयोगकर्ता हैं, तो:
    • पूरे न हो पाने वाले अनुरोध का मैसेज आईडी पता करें.
    • मैसेज प्रोसेसर के लॉग में, मैसेज आईडी खोजें (/opt/apigee/var/log/edge-message-processor/logs/system.log).
    • आपको नीचे दिए गए अपवादों में से कोई एक दिखेगा:

      अपवाद #1: java.io.IO एसडीके: चैनल 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: onexceptWrite अपवाद: {}
      java.io.IOexcept: पाइप की गड़बड़ी

      2021-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
      
    • ये दोनों अपवाद यह बताते हैं कि जब मैसेज प्रोसेसर मैसेज प्रोसेस कर रहा था, ने बैकएंड सर्वर पर पेलोड का अनुरोध किया, तो कनेक्शन को बैकएंड सर्वर. इसलिए, मैसेज प्रोसेसर, अपवाद java.io.IOException: Broken pipe को हटा देता है.
    • Remote:IP:PORT , समाधान किए गए बैकएंड सर्वर को दिखाता है आईपी पता और पोर्ट नंबर.
    • ऊपर दिए गए गड़बड़ी के मैसेज में एट्रिब्यूट bytesWritten=76295 बताता है कि कि मैसेज प्रोसेसर ने बैकएंड को 76295 बाइट का पेलोड भेजा था सर्वर.
    • bytesRead=0 एट्रिब्यूट से पता चलता है कि मैसेज प्रोसेसर ने को बैकएंड सर्वर से कोई डेटा (रिस्पॉन्स) मिला.
    • इस समस्या की ज़्यादा जांच करने के लिए, बैकएंड पर tcpdump इकट्ठा करें और नीचे बताए गए तरीके से इसका विश्लेषण करें.

tcpdump का इस्तेमाल करना

  1. इसके साथ बैकएंड सर्वर या मैसेज प्रोसेसर पर 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
    
  2. कैप्चर किए गए tcpdump का विश्लेषण करें:

    tcpdump आउटपुट का सैंपल (मैसेज प्रोसेसर पर इकट्ठा किया गया):

    alt_text

    ऊपर दिए गए tcpdump में, आपको यह जानकारी दिखेगी:

    1. पैकेट 4 में, मैसेज प्रोसेसर ने POST का अनुरोध भेजा है भी डाउनलोड कर सकता है.
    2. पैकेट 5 में, 8, 9, 10, 11, मैसेज प्रोसेसर ने अनुरोध पेलोड को बैकएंड सर्वर.
    3. पैकेट 6 और 7 में,बैकएंड सर्वर ने मैसेज प्रोसेसर से मिले अनुरोध पेलोड के एक हिस्से के लिए ACK.
    4. हालांकि, ACK से जवाब देने के बजाय, पैकेट 12 में दिए गए डेटा पैकेट के लिए और बाद में रिस्पॉन्स के साथ जवाब देने के लिए पेलोड है, तो बैकएंड सर्वर इसके बजाय FIN ACK कनेक्शन बंद हो जाता है.
    5. इससे साफ़ तौर पर पता चलता है कि बैकएंड सर्वर, कनेक्शन को समय से पहले बंद कर रहा है जबकि मैसेज प्रोसेसर अनुरोध पेलोड भेज रहा था.
    6. इससे मैसेज प्रोसेसर, IOException: Broken Pipe को रिकॉर्ड करता है गड़बड़ी ठीक करें और क्लाइंट को 503 दिखाएं

रिज़ॉल्यूशन

  1. समस्याओं का विश्लेषण करने और उन्हें ठीक करने के लिए, अपने ऐप्लिकेशन और नेटवर्किंग टीमों में से किसी एक या दोनों के साथ काम करें की समस्या है.
  2. पक्का करें कि बैकएंड सर्वर ऐप्लिकेशन टाइम आउट नहीं कर रहा या कनेक्शन को रीसेट नहीं कर रहा पूरा अनुरोध पेलोड पाने से पहले.
  3. अगर आपके पास Apigee और बैकएंड सर्वर के बीच कोई इंटरमीडियरी नेटवर्किंग डिवाइस या लेयर है, तो तो पक्का करें कि पूरा अनुरोध पेलोड मिलने से पहले उनकी अवधि खत्म न हो रही हो.

अगर समस्या अब भी बनी रहती है, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.

ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है

अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यह जानकारी इकट्ठा करें और फिर Apigee Edge की सहायता टीम से संपर्क करें:

अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:

  • संगठन का नाम
  • परिवेश का नाम
  • एपीआई प्रॉक्सी का नाम
  • 503 गड़बड़ी को ठीक करने के लिए, curl निर्देश को पूरा करें
  • अनुरोध वाली 503 Service Unavailable गड़बड़ी वाली फ़ाइल ट्रेस करें
  • अगर 503 गड़बड़ियां अभी नहीं हो रही हैं, तो समयावधि के साथ टाइमज़ोन की जानकारी, जब पहले 503 गड़बड़ियां हुई थीं.

अगर आप निजी 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 को मैसेज प्रोसेसर और बैकएंड सर्वर पर इकट्ठा किया गया, जब कोई गड़बड़ी हुई