502 খারাপ গেটওয়ে - ResponseWithBody

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

উপসর্গ

ক্লায়েন্ট অ্যাপ্লিকেশনটি API কলগুলির প্রতিক্রিয়া হিসাবে ত্রুটি কোড protocol.http.ResponseWithBody সহ 502 Bad Gateway একটি HTTP স্ট্যাটাস কোড পায়।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 সহ প্রতিক্রিয়া পেলোড বডির অংশ হিসাবে কোনও অতিরিক্ত সামগ্রী পাঠানো হবে না মূল সার্ভার দ্বারা 204 No Content বা 205 Reset Content । প্রতিক্রিয়া শিরোনাম যেমন Content-Length , Content-Encoding বা Transfer-Encoding প্রতিক্রিয়া পেলোডের আকার, প্রকার বা বিন্যাস নির্দেশ করে।

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

ব্যাকএন্ড সার্ভার থেকে স্ট্যাটাস কোড
ব্যাকএন্ড সার্ভার থেকে প্রতিক্রিয়া রয়েছে 204 কোন বিষয়বস্তু নেই 205 রিসেট কন্টেন্ট
প্রতিক্রিয়া শরীর ত্রুটি ত্রুটি

Content-Length শিরোনাম

(অ-শূন্য সেট)

ত্রুটি ত্রুটি

Content-Encoding

( Apigee Edge এ সমর্থিত এনকোডিং সেট করা হয়েছে)

ত্রুটি কোনো ত্রুটি নেই
Transfer-Encoding ত্রুটি ত্রুটি

এই ত্রুটির সম্ভাব্য কারণগুলি এখানে রয়েছে:

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

সাধারণ রোগ নির্ণয়ের পদক্ষেপ

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

API মনিটরিং

API মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. Apigee Edge UI এ একটি উপযুক্ত ভূমিকা সহ ব্যবহারকারী হিসাবে সাইন ইন করুন৷
  2. আপনি যে সংস্থায় সমস্যাটি তদন্ত করতে চান সেখানে যান।

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

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

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

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

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

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

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

ট্রেস টুল

ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. ট্রেস সেশন সক্ষম করুন এবং হয়:
    1. 502 Bad Gateway ত্রুটি ঘটতে অপেক্ষা করুন। বা
    2. আপনি যদি সমস্যাটি পুনরুত্পাদন করতে পারেন, তাহলে API কল করুন এবং 502 Bad Gateway ত্রুটি পুনরুত্পাদন করুন৷
  2. সমস্ত ফ্লোইনফোস সক্ষম করা আছে তা নিশ্চিত করুন:

  3. ব্যর্থ অনুরোধগুলির একটি নির্বাচন করুন এবং ট্রেস পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন পর্যায়ে নেভিগেট করুন এবং কোথায় ব্যর্থতা ঘটেছে তা সনাক্ত করুন।
  5. আপনি সাধারণত flowinfo ত্রুটিতে ত্রুটিটি খুঁজে পাবেন নীচের দেখানো হিসাবে লক্ষ্য সার্ভার পর্বে পাঠানো অনুরোধের ঠিক পরে:

    দৃশ্যকল্প #1

    দৃশ্যকল্প #1: ব্যাকএন্ড সার্ভার স্ট্যাটাস কোড 204 No Content এর সাথে প্রতিক্রিয়া জানায় প্রতিক্রিয়া বডি এবং/অথবা সম্ভাব্য কারণগুলিতে তালিকাভুক্ত শিরোনামগুলির মধ্যে একটি সম্বলিত কোনও সামগ্রী নেই৷

    ট্রেস থেকে নিম্নলিখিত মান নোট করুন:

    • ত্রুটি: Received 204 Response with message body
    • error.class: com.apigee.rest.framework.BadGateway

    দৃশ্যকল্প #2

    দৃশ্যকল্প #2: ব্যাকএন্ড সার্ভার স্ট্যাটাস কোড 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 স্ট্যাটাস কোড পাঠিয়েছে।
    ত্রুটি মান
    এক্স-অ্যাপিজি-ফল্ট-কোড protocol.http.ResponseWithBody
    এক্স-অ্যাপিজি-ফল্ট-উৎস target

এনজিআইএনএক্স

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. ত্রুটি কোড protocol.http.ResponseWithBody এর সাথে একটি নির্দিষ্ট সময়কালের (যদি সমস্যাটি অতীতে ঘটে থাকে) বা 502 502 সাথে কোনো অনুরোধ এখনও ব্যর্থ হয়েছে কিনা তা দেখতে অনুসন্ধান করুন।
  4. আপনি যদি X-Apigee-fault-code-এর সাথে protocol.http.ResponseWithBody এর মানের সাথে 502 টি ত্রুটি খুঁজে পান, তাহলে X-Apigee-fault-source- এর মান নির্ধারণ করুন।

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

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

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

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

রোগ নির্ণয়

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

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

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

      নমুনা #1

      নমুনা #1: বিষয়বস্তু-এনকোডিং হেডার সহ ব্যাকএন্ড সার্ভার প্রতিক্রিয়া 204

      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 দিয়ে সাড়া দিয়েছে

      নমুনা #2

      নমুনা #2: বিষয়বস্তু-দৈর্ঘ্য শিরোনাম সহ ব্যাকএন্ড সার্ভার প্রতিক্রিয়া 204

      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 দিয়ে সাড়া দিয়েছে

      নমুনা #3

      নমুনা #3: ব্যাকএন্ড সার্ভার রেসপন্স 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 ত্রুটি কোড protocol.http.ResponseWithBody সহ 502 Bad Gateway স্ট্যাটাস কোড পাঠিয়েছে।http.ResponseWithBody।

রেজোলিউশন

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

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

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

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

স্পেসিফিকেশন
RFC 7231, বিভাগ 6.3.5: 204 কোন বিষয়বস্তু নেই
RFC 7231, সেকশন 6.3.6: 205 রিসেট কন্টেন্ট

উল্লেখ্য মূল পয়েন্ট

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

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

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

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

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

  • প্রতিষ্ঠানের নাম
  • পরিবেশের নাম
  • API প্রক্সি নাম
  • 502 ত্রুটি পুনরুত্পাদন করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড
  • API অনুরোধের জন্য ট্রেস ফাইল

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

  • ব্যর্থ অনুরোধের জন্য পরিলক্ষিত সম্পূর্ণ ত্রুটি বার্তা
  • পরিবেশের নাম
  • API প্রক্সি বান্ডেল
  • 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