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

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

লক্ষণ

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

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

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

HTTP/1.1 502 Bad Gateway

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

{
   "fault":{
      "faultstring":"Body buffer overflow",
      "detail":{
         "errorcode":"protocol.http.TooBigBody"
      }
   }
}

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

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

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

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

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

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

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

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

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

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

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

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

  10. লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
    • স্ট্যাটাস কোড: 502
    • ত্রুটির উৎস: target
    • ত্রুটি কোড: protocol.http.TooBigBody .
  11. যদি ফল্ট সোর্সের মান target এবং ফল্ট কোডের মান ' protocol.http.TooBigBody ' হয়, তাহলে এটি নির্দেশ করে যে টার্গেট/ব্যাকএন্ড সার্ভার থেকে আসা HTTP রেসপন্সের পেলোড সাইজ Apigee Edge-এ অনুমোদিত সীমার চেয়ে বড়।

ট্রেস

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

  1. ট্রেস সেশনটি সক্রিয় করুন এবং নিম্নলিখিতগুলির মধ্যে যেকোনো একটি:
    • 502 Bad Gateway ত্রুটিটি ঘটার জন্য অপেক্ষা করুন, অথবা
    • আপনি যদি সমস্যাটি পুনরায় ঘটাতে পারেন, তাহলে এপিআই কলটি করুন এবং 502 Bad Gateway ত্রুটিটি পুনরায় দেখান।
  2. ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন এবং ট্রেসটি পরীক্ষা করুন।
  3. ট্রেসের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
  4. নিচে দেখানো অনুযায়ী , 'টার্গেট সার্ভার থেকে প্রতিক্রিয়া প্রাপ্ত' ধাপের ঠিক পরেই 'ত্রুটি' ধাপে যান:

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

    • ত্রুটি: Body buffer overflow
    • error.class : com.apigee.errors.http.server.BadGateway

    এর থেকে বোঝা যায় যে, পেলোডের আকার অনুমোদিত সীমা অতিক্রম করার কারণে Apigee Edge (মেসেজ প্রসেসর কম্পোনেন্ট) ব্যাকএন্ড সার্ভার থেকে রেসপন্স পাওয়ার সাথে সাথেই এররটি থ্রো করে।

  5. আপনি Response Sent to Client পর্যায়ে ব্যর্থতাটি দেখতে পাবেন, যা নিচে দেখানো হয়েছে:

  6. ট্রেস থেকে ত্রুটির মানগুলো লক্ষ্য করুন। উপরের নমুনা ট্রেসটি দেখাচ্ছে:
    • ত্রুটি: 502 Bad Gateway
    • ত্রুটির বিষয়বস্তু: {"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
  7. বিভিন্ন পরিস্থিতির জন্য নিচে দেখানো অনুযায়ী 'টার্গেট সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়া' পর্যায়ে যান:

    অসংকুচিত

    দৃশ্যকল্প #১: প্রতিক্রিয়া পেলোড অসংকুচিত আকারে পাঠানো হয়েছে

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

    • টার্গেট সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়া : 200 OK
    • কন্টেন্ট-লেংথ ( রেসপন্স হেডার সেকশন থেকে): ~১১ মেগাবাইট

    সংকুচিত

    দৃশ্যকল্প #২: অনুরোধ পেলোড সংকুচিত আকারে পাঠানো হয়েছে

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

    • টার্গেট সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়া : 200 OK
    • Content-Encoding : আপনি যদি Response Headers সেকশনে এই হেডারটি দেখতে পান, তাহলে এর মানটি লক্ষ্য করুন। যেমন, এই উদাহরণে এর মান হলো gzip
  8. Response Content সেকশনের অধীনে Body অংশটি লক্ষ্য করুন:

    {"fault":{"faultstring":"Body buffer overflow","detail":{"errorcode":"protocol.http.TooBigBody"}}}
    
  9. ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ডেড) ফেজে যান এবং সম্পর্কিত বিবরণ দেখতে সেটির উপর ক্লিক করুন।

  10. Phase Details- এ নিচে স্ক্রল করে Variables Read সেকশনে যান এবং target.received.content.length এর মানগুলো নির্ধারণ করুন, যা নির্দেশ করে:
    • অসংকুচিত বিন্যাসে পাঠানোর সময় প্রতিক্রিয়া পেলোডের প্রকৃত আকার এবং
    • যখন পেলোডটি সংকুচিত ফরম্যাটে পাঠানো হয়, তখন Apigee দ্বারা ডিকম্প্রেশনের পর রেসপন্স পেলোডের আকার। এই ক্ষেত্রে এটি সর্বদা অনুমোদিত সীমার (১০ এমবি) সমান হবে।

    অসংকুচিত

    দৃশ্যকল্প #১: প্রতিক্রিয়া পেলোড অসংকুচিত আকারে পাঠানো হয়েছে

    target.received.content.length- এর মানটি লক্ষ্য করুন:

    অনুরোধ হেডার মূল্য
    লক্ষ্য.প্রাপ্ত.বিষয়বস্তু.দৈর্ঘ্য ~১১ এমবি

    সংকুচিত

    দৃশ্যকল্প #২: অনুরোধ পেলোড সংকুচিত আকারে পাঠানো হয়েছে

    target.received.content.length- এর মানটি লক্ষ্য করুন:

    হেডার অনুরোধ করুন মূল্য
    লক্ষ্য.প্রাপ্ত.বিষয়বস্তু.দৈর্ঘ্য ~১০ এমবি
  11. নিম্নলিখিত সারণিতে target.received.content.length- এর মানের উপর ভিত্তি করে দুটি পরিস্থিতিতে Apigee কেন 502 ত্রুটি ফেরত দেয় তা ব্যাখ্যা করা হয়েছে:

    দৃশ্যকল্প target.received.content.length এর মান ব্যর্থতার কারণ
    অসংকুচিত বিন্যাসে প্রতিক্রিয়া পেলোড ~১১ এমবি আকার > ১০ মেগাবাইটের অনুমোদিত সীমা
    সংকুচিত বিন্যাসে প্রতিক্রিয়া পেলোড ~১০ এমবি

    চাপ কমানোর সময় আকারের সীমা অতিক্রম করা হয়েছে

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

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

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

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

    যেখানে: ORG , ENV , এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হয়।

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

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

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

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

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

রোগ নির্ণয়

  1. সিনারিও #১-এর সাধারণ রোগ নির্ণয়ের ধাপগুলিতে ব্যাখ্যা করা পদ্ধতি অনুসারে, এপিআই মনিটরিং, ট্রেস টুল বা এনজিআইএনএক্স অ্যাক্সেস লগ ব্যবহার করে পরিলক্ষিত ত্রুটির জন্য ফল্ট কোড , ফল্ট সোর্স এবং রেসপন্স পেলোড সাইজ নির্ধারণ করুন।
  2. যদি ফল্ট সোর্সের মান ' target হয়, তাহলে এটি নির্দেশ করে যে টার্গেট/ব্যাকএন্ড সার্ভার থেকে Apigee-তে পাঠানো রেসপন্স পেলোডের আকার Apigee Edge-এ অনুমোদিত সীমার চেয়ে বেশি।
  3. ধাপ ১ থেকে নির্ধারিত রেসপন্স পেলোড সাইজ যাচাই করুন।
  4. নিম্নলিখিত ধাপগুলি অনুসরণ করে প্রকৃত রেসপন্সটি পরীক্ষা করে যাচাই করুন যে রেসপন্স পেলোডের আকার অনুমোদিত সীমা ১০ মেগাবাইটের চেয়ে সত্যিই বেশি কিনা:
    1. টার্গেট/ব্যাকএন্ড সার্ভারে করা আসল অনুরোধটি যদি আপনার কাছে না থাকে, তাহলে রেজোলিউশন- এ যান।
    2. টার্গেট/ব্যাকএন্ড সার্ভারে করা প্রকৃত অনুরোধটি যদি আপনার কাছে থাকে, তাহলে নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
      1. আপনি যদি একজন পাবলিক ক্লাউড/প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে সরাসরি ব্যাকএন্ড সার্ভার থেকেই অথবা এমন কোনো মেশিন থেকে অনুরোধ করুন যেখান থেকে ব্যাকএন্ড সার্ভারে অনুরোধ করার অনুমতি আপনার রয়েছে।
      2. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে আপনি মেসেজ প্রসেসরগুলোর যেকোনো একটি থেকেও ব্যাকএন্ড সার্ভারে অনুরোধ পাঠাতে পারেন।
      3. Content-Length হেডারটি দেখে রেসপন্সে পাঠানো পেলোডের সাইজ যাচাই করুন।
      4. যদি আপনি Apigee Edge-এ পেলোডের আকার অনুমোদিত সীমার চেয়ে বেশি দেখতে পান, তাহলে সেটাই সমস্যার কারণ।

    ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত নমুনা প্রতিক্রিয়া:

    curl -v https://BACKENDSERVER-HOSTNAME/testfile
    
    * About to connect() to 10.14.0.10 port 9000 (#0)
    *   Trying 10.14.0.10...
    * Connected to 10.14.0.10 (10.148.0.10) port 9000 (#0)
    > GET /testfile HTTP/1.1
    > User-Agent: curl/7.29.0
    > Host: 10.14.0.10:9000
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Accept-Ranges: bytes
    < Content-Length: 11534336
    < Content-Type: application/octet-stream
    < Last-Modified: Wed, 30 Jun 2021 08:18:02 GMT
    < Date: Wed, 30 Jun 2021 09:22:41 GMT
    <
    ----snipped----
    <Response Body>

    উপরের উদাহরণে, আপনি দেখতে পাচ্ছেন যে Content-Length: 11534336 (which is ~11 MB) এবং এটিই এই ত্রুটির কারণ, কারণ এটি Apigee Edge-এ অনুমোদিত সীমা অতিক্রম করেছে।

সমাধান

রেজোলিউশনটি দেখুন।

কারণ: ডিকম্প্রেশনের পর রেসপন্স পেলোড সাইজ অনুমোদিত সীমা অতিক্রম করেছে

যদি রেসপন্স পেলোডটি কম্প্রেসড ফরম্যাটে পাঠানো হয় এবং রেসপন্স হেডার Content-Encoding gzip , Apigee রেসপন্স পেলোডটিকে ডিকম্প্রেস করে। ডিকম্প্রেশন প্রক্রিয়ার সময়, যদি Apigee দেখে যে পেলোডের সাইজ Apigee Edge-এ অনুমোদিত সীমার চেয়ে বেশি, তাহলে এটি পরবর্তী ডিকম্প্রেশন বন্ধ করে দেয় এবং সাথে সাথে 502 Bad Gatewayprotocol.http.TooBigBody এরর কোড দিয়ে রেসপন্স করে।

রোগ নির্ণয়

  1. সিনারিও #২-এর সাধারণ রোগনির্ণয় ধাপে ব্যাখ্যা করা পদ্ধতি অনুসারে, এপিআই মনিটরিং, ট্রেস টুল অথবা এনজিআইএনএক্স অ্যাক্সেস লগ ব্যবহার করে পরিলক্ষিত ত্রুটির জন্য ফল্ট কোড, ফল্ট সোর্স এবং রেসপন্স পেলোড সাইজ নির্ধারণ করুন।
  2. যদি ফল্ট সোর্সের মান ' target হয়, তাহলে এটি নির্দেশ করে যে টার্গেট/ব্যাকএন্ড অ্যাপ্লিকেশন থেকে Apigee-তে পাঠানো রেসপন্স পেলোডের আকার Apigee Edge-এ অনুমোদিত সীমার চেয়ে বেশি।
  3. ধাপ ১ থেকে নির্ধারিত রেসপন্স পেলোড সাইজ যাচাই করুন।
    • যদি পেলোড সাইজ অনুমোদিত সীমা ১০ মেগাবাইটের বেশি হয়, তাহলে সেটাই ত্রুটির কারণ।
    • যদি পেলোডের আকার অনুমোদিত সীমা ১০ মেগাবাইটের কাছাকাছি হয়, তাহলে রেসপন্স পেলোডটি কম্প্রেসড ফরম্যাটে পাঠানো হতে পারে। এক্ষেত্রে, কম্প্রেসড রেসপন্স পেলোডটির আনকম্প্রেসড আকার যাচাই করে দেখুন।
  4. টার্গেট/ব্যাকএন্ড থেকে আসা রেসপন্সটি কম্প্রেসড ফরম্যাটে পাঠানো হয়েছে কিনা এবং আনকম্প্রেসড সাইজ অনুমোদিত সীমার চেয়ে বেশি ছিল কিনা, তা আপনি নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি ব্যবহার করে যাচাই করতে পারেন:

    ট্রেস

    ট্রেস টুল ব্যবহার করে:

    1. যদি আপনি ব্যর্থ হওয়া অনুরোধটির ট্রেস সংগ্রহ করে থাকেন, তাহলে ট্রেস এবং অংশে বিস্তারিত ধাপগুলো অনুসরণ করুন।
      1. target.received.content.length- এর মান নির্ণয় করুন।
      2. ক্লায়েন্টের অনুরোধে Content-Encoding: gzip হেডারটি ছিল কিনা তা যাচাই করুন।
    2. যদি target.received.content.length- এর মান অনুমোদিত সীমা ১০ মেগাবাইটের কাছাকাছি হয় এবং রেসপন্স হেডারে Content-Encoding: gzip থাকে, তাহলে এটাই এই ত্রুটির কারণ।

    প্রকৃত অনুরোধ

    প্রকৃত অনুরোধ ব্যবহার করে:

    1. টার্গেট/ব্যাকএন্ড সার্ভারে করা আসল অনুরোধটি যদি আপনার কাছে না থাকে, তাহলে রেজোলিউশন- এ যান।
    2. টার্গেট/ব্যাকএন্ড সার্ভারে করা প্রকৃত অনুরোধটি যদি আপনার কাছে থাকে, তাহলে নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
      1. রেসপন্সে পাঠানো Content-Encoding হেডারের সাথে রেসপন্সে পাস করা পেলোডের সাইজ যাচাই করুন।
      2. যদি আপনি দেখেন যে Apigee Edge-এ রেসপন্স হেডার Content-Encoding gzip এ সেট করা আছে এবং পেলোডের আনকমপ্রেসড সাইজ অনুমোদিত সীমার চেয়ে বেশি, তাহলে এটাই এই এররের কারণ।

        ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত নমুনা প্রতিক্রিয়া:

        curl -v https://BACKENDSERVER-HOSTNAME/testzippedfile.gz
        
        * 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 /testzippedfile.gz 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-Encoding: gzip
        < Content-Type: application/x-gzip
        < Last-Modified: Wed, 30 Jun 2021 08:18:02 GMT
        < Testheader: test
        < Date: Wed, 07 Jul 2021 10:14:16 GMT
        < Transfer-Encoding: chunked
        <
        ----snipped----
        <Response Body>

        উপরের ক্ষেত্রে, Content-Encoding: gzip হেডারটি পাঠানো হয়েছে এবং রেসপন্সে থাকা testzippedfile.gz ফাইলটির সাইজ লিমিটের চেয়ে কম, তবে আনকম্প্রেসড testzippedfile ফাইলটির সাইজ ছিল প্রায় ১৫ মেগাবাইট।

    মেসেজ প্রসেসর লগ

    মেসেজ প্রসেসর লগ ব্যবহার করে:

    1. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP 502 ত্রুটি সম্পর্কিত মূল তথ্য নির্ধারণ করতে মেসেজ প্রসেসর লগ ব্যবহার করতে পারেন।
    2. মেসেজ প্রসেসর লগগুলি পরীক্ষা করুন

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

    3. একটি নির্দিষ্ট সময়কালে কোনো 502 ত্রুটি ছিল কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো অনুরোধ 502 ত্রুটির কারণে ব্যর্থ হচ্ছে কিনা তা অনুসন্ধান করুন। আপনি নিম্নলিখিত সার্চ স্ট্রিংগুলি ব্যবহার করতে পারেন:

      grep -ri "chunkCount"
      
      grep -ri "BadGateway: Body buffer overflow"
      
    4. আপনি system.log এ নীচে দেখানো লাইনের মতো লাইন দেখতে পাবেন (আপনার ক্ষেত্রে TotalRead এবং chunkCount ভিন্ন হতে পারে):
      2021-07-07 09:40:47,012  NIOThread@7 ERROR HTTP.SERVICE -
      TrackingInputChannel.checkMessageBodyTooLarge() : Message is too large.
      TotalRead 10489856 chunkCount 2571
      
      2021-07-07 09:40:47,012  NIOThread@7 ERROR HTTP.CLIENT -
      HTTPClient$Context.onInputException() :
      ClientInputChannel(ClientChannel[Connected:
      Remote:10.148.0.10:9000 Local:10.148.0.9:42240]@9155
      useCount=1 bytesRead=0 bytesWritten=182 age=23ms  lastIO=0ms
      isOpen=true).onExceptionRead exception: {}
      com.apigee.errors.http.server.BadGateway: Body buffer overflow
      
      2021-07-07 09:40:47,012  NIOThread@7 ERROR
      ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() :
      AbstractResponseListener.onError(HTTPResponse@77cbd7c4,
      Body buffer overflow)
    5. ডিকম্প্রেশন প্রক্রিয়া চলাকালীন, মেসেজ প্রসেসর যখনই নির্ধারণ করে যে মোট পঠিত বাইটের পরিমাণ ১০ মেগাবাইটের বেশি, তখনই এটি থেমে যায় এবং নিম্নলিখিত লাইনটি প্রিন্ট করে:

      Message is too large. TotalRead 10489856 chunkCount 2571

      এর মানে হলো রেসপন্স পেলোড সাইজ ১০ মেগাবাইটের বেশি এবং যখন সাইজ ১০ মেগাবাইটের সীমা অতিক্রম করতে শুরু করে, তখন Apigee protocol.http.TooBigBody ফল্ট কোড সহ একটি এরর দেখায়।

সমাধান

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

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

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

স্বাক্ষরিত URL প্যাটার্ন

বিকল্প #২ [সুপারিশকৃত]: Apigee JavaCallout-এর মধ্যে সাইনড ইউআরএল প্যাটার্ন ব্যবহার করুন

১০ মেগাবাইটের চেয়ে বড় পেলোডের জন্য, Apigee একটি Apigee JavaCallout-এর মধ্যে signed URLs প্যাটার্ন ব্যবহার করার পরামর্শ দেয়, যা GitHub-এ থাকা Edge Callout: Signed URL Generator উদাহরণটিতে দেখানো হয়েছে।

স্ট্রিমিং

বিকল্প #৩: স্ট্রিমিং ব্যবহার করুন

আপনার এপিআই প্রক্সিকে যদি খুব বড় আকারের অনুরোধ এবং/অথবা প্রতিক্রিয়া সামলাতে হয়, তাহলে আপনি Apigee-তে স্ট্রিমিং চালু করতে পারেন।

সিডব্লিউসি

বিকল্প #৪: বাফার সীমা বাড়াতে CwC প্রপার্টি ব্যবহার করুন

এই বিকল্পটি কেবল তখনই ব্যবহার করা উচিত যখন আপনি প্রস্তাবিত কোনো বিকল্পই ব্যবহার করতে পারবেন না, কারণ ডিফল্ট আকার বাড়ানো হলে পারফরম্যান্সে সমস্যা দেখা দিতে পারে।

Apigee একটি CwC প্রপার্টি প্রদান করে, যার মাধ্যমে রিকোয়েস্ট এবং রেসপন্স পেলোড সাইজের সীমা বাড়ানো যায়। বিস্তারিত জানতে, “রাউটার বা মেসেজ প্রসেসরে মেসেজ সাইজের সীমা নির্ধারণ করুন” অংশটি দেখুন।

সীমা

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

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

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

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

  1. মেসেজ প্রসেসর মেশিনে, /opt/apigee/edge-message- processor/conf ডিরেক্টরিতে HTTPResponse.body.buffer.limit প্রপার্টিটি খুঁজুন এবং নিচে দেখানো অনুযায়ী কী মান সেট করা হয়েছে তা পরীক্ষা করে দেখুন:

    grep -ri "HTTPResponse.body.buffer.limit" /opt/apigee/edge-message-processor/conf
    
  2. উপরোক্ত কমান্ড থেকে প্রাপ্ত নমুনা ফলাফলটি নিম্নরূপ:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.body.buffer.limit=10m
  3. উপরের উদাহরণ আউটপুটে লক্ষ্য করুন যে, http.properties ফাইলে HTTPResponse.body.buffer.limit প্রপার্টিটির মান 10m সেট করা হয়েছে।

    এর থেকে বোঝা যায় যে, Apigee for Private Cloud-এ কনফিগার করা রিকোয়েস্ট পেলোড সাইজের সীমা হলো ১০ মেগাবাইট।

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

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

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

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

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

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

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