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

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

ক্লায়েন্ট অ্যাপ্লিকেশনটি এপিআই কলের প্রতিক্রিয়া হিসেবে 502 Bad Gateway HTTP স্ট্যাটাস কোড এবং protocol.http.TooBigHeaders এরর কোড পায়।

ত্রুটির বার্তা

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

HTTP/1.1 502 Bad Gateway

এছাড়াও, আপনি নিম্নলিখিত ত্রুটি বার্তাটি দেখতে পারেন:

{
   "fault":{
      "faultstring":"response headers size exceeding 25,600",
      "detail":{
         "errorcode":"protocol.http.TooBigHeaders"
      }
   }
}

সম্ভাব্য কারণসমূহ

টার্গেট/ব্যাকএন্ড সার্ভার থেকে HTTP রেসপন্সের অংশ হিসেবে Apigee Edge-এ পাঠানো হেডারগুলোর মোট আকার Apigee Edge-এর অনুমোদিত সীমার চেয়ে বেশি হলে এই ত্রুটিটি ঘটে।

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

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
রেসপন্সের হেডারগুলোর সাইজ অনুমোদিত সীমার চেয়ে বড় টার্গেট/ব্যাকএন্ড সার্ভার থেকে Apigee Edge-এ HTTP রেসপন্সের অংশ হিসেবে পাঠানো কোনো একটি নির্দিষ্ট হেডারের সাইজ অথবা সমস্ত হেডারের সাইজের যোগফল , Apigee Edge-এ অনুমোদিত সীমার চেয়ে বেশি। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

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

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

এপিআই মনিটরিং

এপিআই মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:

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

  3. Analyze > API Monitoring > Investigate পৃষ্ঠায় যান।
  4. সেই নির্দিষ্ট সময়সীমাটি নির্বাচন করুন যার মধ্যে আপনি ত্রুটিগুলো লক্ষ্য করেছেন।
  5. ফল্ট কোডটি আরও নির্দিষ্ট করতে আপনি প্রক্সি ফিল্টারটি নির্বাচন করতে পারেন।
  6. সময়ের সাপেক্ষে ফল্ট কোডের লেখচিত্র অঙ্কন করুন।
  7. নীচে দেখানো অনুযায়ী, যে সেলটিতে ফল্ট কোড protocol.http.TooBigHeaders রয়েছে, সেটি নির্বাচন করুন:

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

  8. আপনি নিচে দেখানো অনুযায়ী ফল্ট কোড protocol.http.TooBigHeaders http.TooBigHeaders সম্পর্কিত তথ্য দেখতে পাবেন:

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

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

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

  10. লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
    • স্ট্যাটাস কোড: 502
    • ত্রুটির উৎস: target
    • ত্রুটি কোড: protocol.http.TooBigHeaders .
  11. যদি ফল্ট সোর্সের মান target এবং ফল্ট কোডের মান ' protocol.http.TooBigHeaders হয়, তাহলে এটি নির্দেশ করে যে টার্গেট/ব্যাকএন্ড সার্ভার থেকে আসা HTTP রেসপন্সে এমন হেডার রয়েছে যার আকার 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 দ্বারা প্রেরিত 'Response Sent to Client' এরর রেসপন্সে ব্যর্থতাটি দেখতে পাবেন, যা নিচে দেখানো হয়েছে:

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

  6. ট্রেস থেকে ত্রুটির মানগুলো লক্ষ্য করুন। উপরের নমুনা ট্রেসটি দেখাচ্ছে:
    • ত্রুটি: 502 Bad Gateway ।
    • ত্রুটির বিবরণ: {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
  7. ট্রেস-এর AX (অ্যানালিটিক্স ডেটা রেকর্ড করা হয়েছে) পর্যায়ে যান এবং সম্পর্কিত বিবরণ দেখতে সেটির উপর ক্লিক করুন।

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

    নিম্নলিখিতটির মান লক্ষ্য করুন:

    ত্রুটির হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.TooBigHeaders
    এক্স-এপিজি-ফল্ট-সোর্স target
    ত্রুটিপূর্ণ বিষয়বস্তু: মূল অংশ {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}

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

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

    NGINX অ্যাক্সেস লগ থেকে প্রাপ্ত একটি নমুনা ৫০২ এরর:

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

    ত্রুটির হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.TooBigHeaders
    এক্স-এপিজি-ফল্ট-সোর্স target

কারণ: রেসপন্সের হেডারগুলোর সাইজ অনুমোদিত সীমার চেয়ে বড়।

রোগ নির্ণয়

  1. সাধারণ রোগ নির্ণয়ের ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং, ট্রেস টুল বা 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. মেসেজ প্রসেসর ব্যাকএন্ড/টার্গেট সার্ভার থেকে রেসপন্স পাওয়ার সাথে সাথেই যখন দেখে যে হেডারগুলোর মোট সাইজ ২৫ কেবি-র বেশি, তখন এটি থেমে যায় এবং এই এররটি দেখায়:

      response headers size exceeding 25,600

      এর মানে হলো মোট হেডার সাইজ ২৫ কেবি-র বেশি এবং যখন সাইজটি ২৫ কেবি সীমা অতিক্রম করতে শুরু করে, তখন Apigee protocol.http.TooBigHeaders ফল্ট কোড সহ একটি এরর দেখায়।

সমাধান

নির্দিষ্ট আকার

বিকল্প #১ [সুপারিশকৃত]: টার্গেট সার্ভার অ্যাপ্লিকেশনটিকে এমনভাবে ঠিক করুন যাতে এটি Apigee-এর সীমা অতিক্রমকারী আকারের হেডার না পাঠায়।

  1. Limits- এ সংজ্ঞায়িত অনুমোদিত সীমার চেয়ে নির্দিষ্ট টার্গেট সার্ভারটির রেসপন্স হেডার সাইজ বেশি পাঠানোর কারণ বিশ্লেষণ করুন।
  2. যদি এটি কাম্য না হয়, তবে আপনার ব্যাকএন্ড সার্ভার অ্যাপ্লিকেশনটি এমনভাবে পরিবর্তন করুন যাতে এটি Apigee Edge-এ অনুমোদিত সীমার চেয়ে কম আকারের Response হেডার পাঠায়।
  3. হেডার তথ্য রেসপন্স বডির অংশ হিসেবে পাঠানো যায় কিনা তা যাচাই করুন।
  4. যদি সম্ভব হয়, হেডারের অংশ হিসেবে পাঠানোর পরিকল্পনা করা যেকোনো বড় তথ্য রেসপন্স বডিতে পাঠান। এতে নিশ্চিত হবে যে আপনি রেসপন্স হেডারের সীমা অতিক্রম করবেন না।

সিডব্লিউসি

বিকল্প #২ : রেসপন্স হেডার সাইজের সীমা বাড়াতে CwC প্রপার্টি ব্যবহার করুন।

Apigee একটি CwC প্রপার্টি প্রদান করে যা রেসপন্স হেডারের আকারের সীমা বাড়াতে সাহায্য করে। বিস্তারিত জানতে মেসেজ প্রসেসরের জন্য সীমা কনফিগার করা দেখুন।

সীমা

Apigee আশা করে যে ক্লায়েন্ট অ্যাপ্লিকেশন এবং ব্যাকএন্ড সার্ভার, Apigee Edge Limits- এ Request/Response Header Size-এর জন্য নথিভুক্ত অনুমোদিত সীমার চেয়ে বড় হেডার সাইজ পাঠাবে না।

  1. আপনি যদি একজন পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে রিকোয়েস্ট এবং রেসপন্স হেডারের আকারের সর্বোচ্চ সীমা Apigee Edge Limits- এ উল্লেখিত Request/Response Header size অনুযায়ী হবে।
  2. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে আপনি হয়তো রিকোয়েস্ট এবং রেসপন্স হেডার সাইজের ডিফল্ট সর্বোচ্চ সীমা পরিবর্তন করে থাকতে পারেন (যদিও এটি একটি অনুচিত কাজ)। ‘বর্তমান সীমা কীভাবে পরীক্ষা করবেন’ অংশে দেওয়া নির্দেশাবলী অনুসরণ করে আপনি রেসপন্স হেডারের সর্বোচ্চ আকারের সীমা নির্ধারণ করতে পারেন।

বর্তমান সীমা কীভাবে পরীক্ষা করবেন?

এই অংশে ব্যাখ্যা করা হয়েছে কিভাবে যাচাই করতে হয় যে মেসেজ প্রসেসরগুলিতে HTTPResponse.headers.limit প্রপার্টিটি একটি নতুন মান দ্বারা আপডেট করা হয়েছে।

  1. মেসেজ প্রসেসর মেশিনে, /opt/apigee/edge-message-processor/conf ডিরেক্টরিতে HTTPResponse.headers.limit প্রপার্টিটি খুঁজুন এবং নিচে দেখানো অনুযায়ী কী মান সেট করা হয়েছে তা পরীক্ষা করে দেখুন:
    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. উপরের উদাহরণ আউটপুটে লক্ষ্য করুন যে, http.properties ফাইলে HTTPResponse.headers.limit প্রপার্টিটির মান 25k সেট করা হয়েছে।

    এর থেকে বোঝা যায় যে, Apigee for Private Cloud-এ কনফিগার করা Response payload size-এর সীমা হলো ২৫ KB।

আপনার যদি এখনও Apigee Support-এর কাছ থেকে কোনো সাহায্যের প্রয়োজন হয়, তাহলে Must gather diagnostic information- এ যান।

রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে

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

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

  • সংস্থার নাম
  • পরিবেশের নাম
  • এপিআই প্রক্সি নাম
  • 502 ত্রুটিটি পুনরুৎপাদন করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড।
  • এপিআই অনুরোধগুলির ট্রেস ফাইল
  • হেডারগুলোর আকার সহ টার্গেট/ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়ার সম্পূর্ণ আউটপুট

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

  • ব্যর্থ অনুরোধগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
  • সংস্থার নাম
  • পরিবেশের নাম
  • এপিআই প্রক্সি বান্ডেল
  • ব্যর্থ হওয়া এপিআই অনুরোধগুলির ট্রেস ফাইল
  • 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