431 অনুরোধ শিরোনাম ক্ষেত্রগুলি খুব বড় - TooBigHeaders৷

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

লক্ষণ

ক্লায়েন্ট অ্যাপ্লিকেশনটি এপিআই কলের প্রতিক্রিয়া হিসাবে protocol.http.TooBigHeaders এরর কোড সহ 431 Request Header Fields Too Large নামক একটি HTTP স্ট্যাটাস কোড পায়।

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

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

HTTP/1.1 431 Request Header Fields Too Large

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

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

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

RFC 6585, সেকশন 5: 431 Request Header Fields Too Large অনুযায়ী, ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা HTTP অনুরোধের অংশ হিসাবে Apigee Edge-এ পাঠানো সমস্ত অনুরোধ হেডারের মোট আকার যদি Apigee Edge-এ অনুমোদিত সীমার চেয়ে বেশি হয়, তাহলে এই ত্রুটিটি ঘটে।

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:

    • স্ট্যাটাস কোড: 431
    • ত্রুটির উৎস: apigee
    • ত্রুটি কোড: protocol.http.TooBigHeaders .
    • অনুরোধের দৈর্ঘ্য (বাইট): 32150 (> 25 KB)
  10. যদি ফল্ট সোর্সের মান apigee বা MP হয়, ফল্ট কোডের মান protocol.http.TooBigHeaders হয় এবং রিকোয়েস্ট লেংথ ২৫ কেবি-র বেশি হয়, তাহলে এটি নির্দেশ করে যে ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা HTTP রিকোয়েস্টের অংশ হিসেবে পাঠানো সমস্ত রিকোয়েস্ট হেডারের মোট আকার Apigee-তে অনুমোদিত সীমার চেয়ে বেশি।

ট্রেস টুল

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

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

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

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

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

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

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

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

    অনুরোধের দৈর্ঘ্যটি লক্ষ্য করুন: 40159 (৪০ কেবি, Apigee Edge-এ অনুরোধ হেডারের অনুমোদিত সীমা ২৫ কেবি-র চেয়ে বেশি)।

    উপরের নমুনা লগ এন্ট্রিতে, X-Apigee-fault-source-এর মান হলো apigee or MP , X-Apigee-fault-code-এর মান হলো protocol.http.TooBigHeaders এবং Request Length হলো 40 KB, যা Apigee-তে অনুমোদিত সীমা 25 KB-এর চেয়ে বেশি। এটি স্পষ্টভাবে নির্দেশ করে যে, HTTP অনুরোধের অংশ হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা প্রেরিত সমস্ত অনুরোধ হেডারের মোট আকার Apigee Edge-এর 25 KB-এর অনুমোদিত সীমা অতিক্রম করেছে।

কারণ: অনুরোধ হেডারের আকার অনুমোদিত সীমার চেয়ে বড়

রোগ নির্ণয়

  1. সাধারণ রোগ নির্ণয়ের ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং অথবা NGINX অ্যাক্সেস লগ ব্যবহার করে পরিলক্ষিত ত্রুটির জন্য ফল্ট কোড , ফল্ট সোর্স এবং রিকোয়েস্ট-লেংথ সাইজ নির্ধারণ করুন।
  2. যদি ফল্ট সোর্সের মান apigee বা MP হয়, ফল্ট কোডের মান protocol.http.TooBigHeaders হয় এবং রিকোয়েস্ট লেংথ ২৫ কেবি-র বেশি হয়, তাহলে এটি নির্দেশ করে যে ক্লায়েন্ট অ্যাপ্লিকেশন কর্তৃক Apigee-তে পাঠানো রিকোয়েস্টের আকার Apigee Edge-এ অনুমোদিত সীমার চেয়ে বেশি।
  3. নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি ব্যবহার করে আপনি যাচাই করতে পারেন যে রিকোয়েস্ট হেডারের সাইজ অনুমোদিত ২৫ কেবি সীমা অতিক্রম করেছে কিনা:

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

    ত্রুটির বার্তা ব্যবহার করে যাচাই করতে:

    আপনার কাছে যদি Apigee Edge থেকে প্রাপ্ত সম্পূর্ণ এরর মেসেজটি থাকে, তাহলে faultstring টি দেখুন। faultstring টি নির্দেশ করে যে Request Headers-এর মোট সাইজ ২৫ KB-এর অনুমোদিত সীমা অতিক্রম করেছে।

    নমুনা ত্রুটি বার্তা:

    "faultstring":"request headers size exceeding 25,600"

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

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

    ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা করা প্রকৃত অনুরোধটি যদি আপনার কাছে থাকে, তাহলে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

    1. অনুরোধে পাঠানো হেডারগুলোর আকার যাচাই করুন।
    2. যদি আপনি Apigee Edge-এ হেডারগুলোর মোট আকার অনুমোদিত সীমার চেয়ে বেশি দেখতে পান, তাহলে সেটাই সমস্যার কারণ।

      নমুনা অনুরোধ:

      curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
      

      উপরোক্ত ক্ষেত্রে, header0 , header1 , header2 এবং header3 হেডারগুলোর মোট আকার 25 KB-এর বেশি, অর্থাৎ, এতে 25 K-এর বেশি ASCII অক্ষর (বাইট) রয়েছে।

      আপনি যদি অন্য কোনো ক্লায়েন্ট ব্যবহার করেন, তাহলে ক্লায়েন্ট লগগুলো পর্যালোচনা করে Apigee Edge-এ পাঠানো রিকোয়েস্ট লাইনের সাইজ খুঁজে বের করার চেষ্টা করতে পারেন।

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

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

    আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে Apigee Edge-এ রিকোয়েস্ট হেডারের আকার অনুমোদিত সীমা অতিক্রম করেছে কিনা তা যাচাই করতে মেসেজ প্রসেসর লগ ব্যবহার করতে পারেন।

    1. মেসেজ প্রসেসর লগগুলো পরীক্ষা করুন:

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

    2. একটি নির্দিষ্ট সময়কালে কোনো 431 ত্রুটি ছিল কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো অনুরোধ 431 ত্রুটির কারণে ব্যর্থ হচ্ছে কিনা তা অনুসন্ধান করুন। আপনি নিম্নলিখিত সার্চ স্ট্রিংগুলি ব্যবহার করতে পারেন।
      grep -ri "exceeding"
      
      grep -ri "RequestHeadersTooLarge"
      
    3. আপনি system.log এ নিম্নলিখিতগুলির মতো লাইন খুঁজে পাবেন:
      2021-07-27 08:30:28,419  NIOThread@1 ERROR ADAPTORS.HTTP.FLOW -
      AbstractRequestListener.onException() :
      Request:GET, uri:/test/, message Id:null,
      exception:com.apigee.errors.http.user.RequestHeadersTooLarge{
      code = protocol.http.TooBigHeaders, message = request headers size
      exceeding 25,600, associated contexts = []}, context:Context@9c5903
      input=ClientInputChannel(SSLClientChannel[Accepted:
      Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130
      useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms  lastIO=0ms
      isOpen=true)

      উপরের এরর মেসেজে থাকা message = request headers size exceeding 25,600 নির্দেশ করে যে, মোট রিকোয়েস্ট হেডারের সাইজ ২৫ কেবি-র বেশি। তাই, Apigee Edge ক্লায়েন্ট অ্যাপ্লিকেশনগুলোতে com.apigee.errors.http.user.RequestHeadersTooLarge এক্সেপশনটি থ্রো করে এবং protocol.http.TooBigHeaders ফল্ট কোডসহ 431 স্ট্যাটাস কোড রিটার্ন করে।

সমাধান

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

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

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

    উপরে আলোচিত উদাহরণে, আপনি রিকোয়েস্ট বডি/পে-লোডের অংশ হিসেবে long হেডার ভ্যালু প্যারামিটারটি পাস করে সমস্যাটি সমাধান করতে পারেন:

    curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'
    
  3. যদি প্রয়োজন হয় এবং আপনি অনুমোদিত সীমার চেয়ে বেশি হেডার পাঠাতে চান, তাহলে পরবর্তী অপশনে যান।

সিডব্লিউসি

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

Apigee একটি CwC প্রপার্টি প্রদান করে যা রিকোয়েস্ট লাইন সাইজের সীমা বাড়াতে সাহায্য করে। বিস্তারিত জানতে, মেসেজ প্রসেসরে রিকোয়েস্ট লাইন লিমিট সেট করা দেখুন।

সীমা

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

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

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

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

  1. মেসেজ প্রসেসর মেশিনে, /opt/apigee/edge-message-processor/conf ডিরেক্টরিতে HTTPRequest.headers.limit প্রপার্টিটি খুঁজুন এবং নিচে দেখানো অনুযায়ী কী ভ্যালু সেট করা হয়েছে তা পরীক্ষা করে দেখুন:
    grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
    
  2. উপরোক্ত কমান্ড থেকে প্রাপ্ত নমুনা ফলাফলটি নিম্নরূপ:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
  3. উপরের উদাহরণ আউটপুটে লক্ষ্য করুন যে, http.properties ফাইলে HTTPRequest.headers.limit প্রপার্টিটির মান 25k সেট করা হয়েছে।

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

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

Apigee Edge আশা করে যে ক্লায়েন্ট অ্যাপ্লিকেশনটি অনুরোধের অংশ হিসেবে বড় আকারের হেডার পাঠাবে না। যদি অনুরোধে নির্দিষ্ট সীমার চেয়ে বেশি আকারের হেডার থাকে, তাহলে Apigee নিম্নলিখিত RFC স্পেসিফিকেশন অনুযায়ী 431 Request Header Fields Too Large ত্রুটি দেখায়:

স্পেসিফিকেশন
RFC 6585, ধারা ৫: ৪৩১ অনুরোধ হেডার ফিল্ডগুলি খুব বড়

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

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

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

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

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

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

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