502 Bad Gateway - ResponseWithBody

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

সমস্যার উপসর্গ

API কলের উত্তর হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন 502 Bad Gateway HTTP স্ট্যাটাস কোড সহ সমস্যা কোড protocol.http.ResponseWithBody পায়।

সমস্যা সংক্রান্ত মেসেজ

ক্লায়েন্ট অ্যাপ্লিকেশন নিম্নলিখিত রেসপন্স কোড পায়:

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-এ ব্যাকএন্ড সার্ভার থেকে পাওয়া HTTP রেসপন্স 204 No Content বা 205 Reset Content হলে এই সমস্যা হয়, তবে এতে রেসপন্স বডি এবং/অথবা নিম্নলিখিত হেডারগুলির মধ্যে একটি বা একাধিক থাকে:

  • Content-Length
  • Content-Encoding
  • Transfer-Encoding

স্পেসিফিকেশন RFC 7231, বিভাগ 6.3.5: 204 কোনও কন্টেন্ট নেই এবং RFC 7231, বিভাগ 6.3.6: 205 কন্টেন্ট রিসেট করুন অনুযায়ী, এটি আশা করা হয় যে কোনও অতিরিক্ত কন্টেন্ট স্ট্যাটাস কোড 204 No Content বা 205 Reset Content সহ রেসপন্স পেলোড বডির অংশ হিসেবে অরিজিন সার্ভার দ্বারা পাঠানো হবে না। Content-Length, Content-Encoding বা Transfer-Encoding-এর মতো রেসপন্স হেডার, রেসপন্স পেলোডের সাইজ, ধরন বা ফর্ম্যাট নির্দেশ করে।

তাই, নিম্নলিখিত পরিস্থিতিতে Apigee Edge ক্লায়েন্টকে 502 Bad Gateway স্ট্যাটাস কোড সহ সমস্যার কোড protocol.http.ResponseWithBody রিটার্ন করে:

ব্যাকএন্ড সার্ভার থেকে স্ট্যাটাস কোড
ব্যাকএন্ড সার্ভারের উত্তর এগুলি থাকে ২০৪ কোনও কন্টেন্ট নেই 205 রিসেট কন্টেন্ট
উত্তর বডি সমস্যা সমস্যা

Content-Length হেডার

(শূন্য ছাড়া অন্য কোনও সংখ্যায় সেট করা)

সমস্যা সমস্যা

Content-Encoding

(এভাবে সেট করা আছে Apigee Edge-এ কাজ করে এমন এনকোডিং)

সমস্যা কোনও সমস্যা নেই
Transfer-Encoding সমস্যা সমস্যা

এই সমস্যার সম্ভাব্য কারণগুলি এখানে দেওয়া হল:

কারণ বিবরণ এর জন্য প্রযোজ্য সমস্যার সমাধান সংক্রান্ত নির্দেশাবলী
ব্যাকএন্ড সার্ভার থেকে 204 রেসপন্স সহ রেসপন্স বডি বা হেডার ব্যাকএন্ড সার্ভার, রেসপন্স বডি এবং/অথবা এক বা একাধিক হেডার Content-Type, Content-Encoding বা Transfer-Encoding সহ 204 No Content বা 205 Reset Content উত্তর পাঠায়। এজ পাবলিক ও প্রাইভেট ক্লাউড ব্যবহারকারী

সাধারণ ডায়াগনসিস ধাপ

এই সমস্যা ডায়াগনসিস করতে নিম্নলিখিত টুল/টেকনিকের মধ্যে একটি ব্যবহার করুন:

API মনিটরিং

API মনিটরিং ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

  1. Apigee Edge UI-তে সাইন-ইন করুন উপযুক্ত ভূমিকা সহ ব্যবহারকারী হিসেবে।
  2. যে প্রতিষ্ঠানে সমস্যাটি তদন্ত করতে চান সেটিতে পরিবর্তন করুন।

  3. বিশ্লেষণ করুন > API মনিটরিং > তদন্ত করুন পৃষ্ঠায় নেভিগেট করুন।
  4. আপনি যে নির্দিষ্ট সময়সীমার মধ্যে সমস্যাটি লক্ষ্য করেছেন সেটি বেছে নিন।
  5. সময় অনুযায়ী সমস্যার কোড প্লট করুন।
  6. এমন একটি সেল বেছে নিন যেখানে protocol.http.ResponseWithBody ফল্ট কোডটি নিচে দেখানো মতো আছে:

    ( আরও বড় ছবি দেখুন)

  7. আপনি নিচে দেখানো protocol.http.ResponseWithBody ফল্ট কোড সংক্রান্ত তথ্য দেখতে পাবেন:

    ( আরও বড় ছবি দেখুন)

  8. লগ দেখুন বিকল্পে ক্লিক করুন এবং ব্যর্থ অনুরোধের সারিটি বড় করে দেখুন।

    ( আরও বড় ছবি দেখুন)

  9. লগ উইন্ডো থেকে, নিম্নলিখিত বিবরণ নোট করুন:
    • স্ট্যাটাস কোড: 502
    • সমস্যার সোর্স: target
    • সমস্যার কোড: protocol.http.ResponseWithBody.
  10. সমস্যার সোর্স-এর ভ্যালু target এবং সমস্যা কোড-এর ভ্যালু protocol.http.ResponseWithBody হলে, এর অর্থ হল যে ব্যাকএন্ড সার্ভার 204 No Content বা 205 Reset Content স্ট্যাটাস কোড সহ রেসপন্স বডি এবং/অথবা সম্ভাব্য কারণ বিভাগে উল্লেখ করা হেডারগুলির মধ্যে একটি পাঠিয়েছে বলে সমস্যা হয়েছে।

ট্রেস টুল

Trace টুল ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

  1. ট্রেস সেশন চালু করুন এবং এগুলির মধ্যে একটি:
    1. 502 Bad Gateway সমস্যার জন্য অপেক্ষা করুন। অথবা
    2. আপনি যদি সমস্যাটি আবার তৈরি করতে পারেন, তাহলে API কল করুন এবং 502 Bad Gateway সমস্যাটি আবার তৈরি করুন।
  2. সব FlowInfo দেখুন বিকল্প চালু আছে কিনা দেখুন:

  3. কাজ না করা অনুরোধগুলির মধ্যে একটি বেছে নিন এবং ট্রেস পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন ফেজ নেভিগেট করুন এবং কোথায় সমস্যা হয়েছে তা খুঁজে বের করুন।
  5. আপনি সাধারণত টার্গেট সার্ভারে অনুরোধ পাঠানো হয়েছে ধাপের ঠিক পরে 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
  6. ট্রেসে AX (Analytics Data Recorded) ফেজে নেভিগেট করুন এবং এটিতে ক্লিক করুন।
  7. নিচের দিকে স্ক্রল করে ফেজ সংক্রান্ত বিবরণ, সমস্যার হেডার বিভাগে যান এবং নিচে দেখানো X-Apigee-fault-code ও X-Apigee-fault-source-এর ভ্যালু নির্ধারণ করুন:

    ( আরও বড় ছবি দেখুন)

  8. মনে রাখবেন, 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.ResponseWithBody
    X-Apigee-fault-source target

NGINX

NGINX অ্যাক্সেস লগ ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

  1. আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, HTTP 502 Bad Gateway সম্পর্কে মূল তথ্য নির্ধারণ করতে আপনি NGINX অ্যাক্সেস লগ ব্যবহার করতে পারবেন।
  2. NGINX অ্যাক্সেস লগ চেক করুন:

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

    কোথায়: ORG, ENV ও PORT#-এর জায়গায় আসল ভ্যালু বসাতে হবে।

  3. নির্দিষ্ট সময়সীমার মধ্যে 502 error code সহ কোনও সমস্যা হয়েছে কিনা তা সার্চ করে দেখুনprotocol.http.ResponseWithBody (যদি সমস্যাটি আগে হয়ে থাকে) অথবা এখনও কোনও অনুরোধ 502 সহ ব্যর্থ হচ্ছে কিনা তা দেখুন।
  4. আপনি যদি protocol.http.ResponseWithBody-এর ভ্যালুর সাথে ম্যাচ করা X-Apigee-fault-code সহ কোনও 502 সমস্যা খুঁজে পান, তাহলে X-Apigee-fault-source-এর ভ্যালু নির্ধারণ করুন।

    NGINX অ্যাক্সেস লগ থেকে 502 সমস্যার নমুনা:

    NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিতে X- Apigee-fault-code ও X-Apigee-fault-source-এর জন্য নিম্নলিখিত ভ্যালু আছে:

    রেসপন্স হেডার ভ্যালু
    X-Apigee-fault-code protocol.http.ResponseWithBody
    X-Apigee-fault-source target
  5. মনে রাখবেন, X-Apigee-fault-code এবং X-Apigee-fault-source -এর ভ্যালু যথাক্রমে protocol.http.ResponseWithBody এবং target। এর থেকে বোঝা যায় যে ব্যাকএন্ড সার্ভার 204 No Content বা 205 Reset Content স্ট্যাটাস কোড সহ রেসপন্স বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা হেডারগুলির মধ্যে একটি পাঠানোর কারণে সমস্যাটি হয়েছে।

কারণ: ব্যাকএন্ড সার্ভার থেকে 204 উত্তর সহ উত্তর বডি বা হেডার

ডায়াগনসিস

  1. API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে দেখা সমস্যার জন্য সমস্যার কোড ও সমস্যার সোর্স নির্ধারণ করুন, যা সমস্যার সাধারণ ডায়াগনসিস ধাপ-এ ব্যাখ্যা করা হয়েছে।
  2. সমস্যা কোড protocol.http.ResponseWithBody হলে এবং সমস্যার সোর্স-এর ভ্যালু target হলে, এর অর্থ হল ব্যাকএন্ড সার্ভার 204 No Content বা 205 Reset Content স্ট্যাটাস কোড সহ উত্তর দিয়েছে এবং উত্তরের বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা হেডারগুলির মধ্যে একটি।
  3. ব্যাকএন্ড সার্ভার সত্যিই কোনও রেসপন্স পেলোড বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা এক বা একাধিক হেডার পাঠিয়েছে কিনা তা যাচাই করতে, আপনি নিচের ধাপগুলি অনুসরণ করতে পারেন:

    1. আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন এবং আপনার যেকোনও সিস্টেম থেকে সরাসরি ব্যাকএন্ড সার্ভারে একই API অনুরোধ করতে পারেন।

    2. আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, আপনি একই API অনুরোধ ব্যাকএন্ড সার্ভারে সরাসরি সেই মেসেজ প্রসেসরগুলির মধ্যে একটি থেকে করতে পারবেন যেগুলি নির্দিষ্ট সংস্থা এবং পরিবেশের সাথে যুক্ত যেখানে সমস্যাটি দেখা গেছে।
    3. ব্যাকএন্ড সার্ভার থেকে পাওয়া উত্তর পর্যালোচনা করুন এবং যাচাই করুন যে এতে একটি উত্তর পেলোড বডি এবং/অথবা উপরে উল্লেখ করা হেডারগুলির মধ্যে একটি বা একাধিক আছে। হ্যাঁ হলে, তাহলে এটিই এই সমস্যার কারণ।

      নমুনা #১

      Sample #১: Backend Server Response 204 with Content-Encoding Header

      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

      নমুনা #২

      নমুনা #২: কন্টেন্ট-লেংথ হেডার সহ ব্যাকএন্ড সার্ভার রেসপন্স ২০৪

      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. রয়েছে

    4. উপরের সবকটি উদাহরণে, ব্যাকএন্ড সার্ভার রেসপন্স বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা হেডারগুলির মধ্যে একটির সাথে 204 No Content বা 205 Reset Content স্ট্যাটাস কোড পাঠিয়েছে।
    5. তাই, Apigee Edge 502 Bad Gateway স্ট্যাটাস কোড সহ এরর কোড protocol.http.ResponseWithBody পাঠিয়েছে।

রেজোলিউশন

Apigee Edge-এ 204 No Content বা 205 Reset Content উত্তর পাঠানোর সময় ব্যাকএন্ড সার্ভার যেন সবসময় স্পেসিফিকেশন RFC 7231, বিভাগ 6.3.6: 205 রিসেট কন্টেন্ট মেনে চলে তা নিশ্চিত করুন। অর্থাৎ, ব্যাকএন্ড সার্ভারকে অবশ্যই 204 No Content বা 205 Reset Content উত্তরের অংশ হিসেবে নিম্নলিখিতগুলি পাঠালে চলবে না:

  1. উত্তর পেলোডের বডি
  2. এবং নিম্নলিখিত হেডারগুলির মধ্যে যেকোনও একটি:
    1. Content-Length
    2. Content-Encoding
    3. Transfer-Encoding

স্পেসিফিকেশন

ব্যাকএন্ড সার্ভার যদি 502 Bad Gateway বা protocol.http.ResponseWithBody উত্তর পাঠায়, কিন্তু নিচে উল্লেখ করা RFC স্পেসিফিকেশন মেনে না চলে, তাহলে Apigee Edge 204 No Content স্ট্যাটাস কোড ও সমস্যার কোড 205 Reset Content সহ উত্তর দেয়:

স্পেসিফিকেশন
RFC 7231, section 6.3.5: 204 No Content
RFC 7231, section 6.3.6: 205 Reset Content

মনে রাখার মতো গুরুত্বপূর্ণ বিষয়

সাজেস্ট করা সমাধান হল, ব্যাকএন্ড সার্ভার ঠিক করে 204 No Content ও 205 Reset Content স্ট্যাটাস কোড পাঠাতে হবে, যাতে রেসপন্স বডি ও কোনও হেডার না থাকে - Content-Length, Content-Encoding ও Transfer-Encoding এবং স্পেসিফিকেশন RFC 7231, বিভাগ 6.3.5: ২০৪ কোনও কন্টেন্ট নেই ও RFC 7231, বিভাগ 6.3.6: ২০৫ কন্টেন্ট রিসেট করুন মেনে চলতে হবে।

Apigee সহায়তা টিমের থেকে এখনও কোনও সাহায্যের প্রয়োজন হলে, রোগ নির্ণয় সংক্রান্ত তথ্য অবশ্যই সংগ্রহ করুন।

অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে

নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন:

আপনি পাবলিক ক্লাউড ব্যবহারকারী হলে, নিম্নলিখিত তথ্য প্রদান করুন:

  • সংস্থার নাম
  • পরিবেশের নাম
  • API প্রক্সির নাম
  • 502 সমস্যাটি আবার তৈরি করতে curl কমান্ড সম্পূর্ণ করুন
  • API অনুরোধের জন্য ট্রেস ফাইল

আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, নিম্নলিখিত তথ্য দিন:

  • অনুরোধ সম্পূর্ণ না হওয়ার ক্ষেত্রে দেখা সম্পূর্ণ সমস্যার মেসেজ
  • পরিবেশের নাম
  • API Proxy বান্ডেল
  • API অনুরোধের জন্য ট্রেস ফাইল
  • 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