414 অনুরোধ-ইউআরআই খুব দীর্ঘ - খুব বড় লাইন

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

উপসর্গ

ক্লায়েন্ট অ্যাপ্লিকেশনটি API কলগুলির প্রতিক্রিয়া হিসাবে ত্রুটি কোড protocol.http.TooBigLine .http.TooBigLine সহ 414 Request-URI Too Long একটি HTTP স্ট্যাটাস কোড পায়৷

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

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

HTTP/1.1 414 Request-URI Too Long

উপরন্তু, আপনি নিম্নলিখিত ত্রুটি বার্তা পর্যবেক্ষণ করতে পারেন:

{
   "fault":{
      "faultstring":"request line size exceeding 7,168",
      "detail":{
         "errorcode":"protocol.http.TooBigLine"
      }
   }
}

উল্লেখ্য যে উপরের ত্রুটি বার্তার faultstring Apigee Edge-এ অনুরোধ লাইনের জন্য অনুমোদিত সীমা রয়েছে, যা 7168 bytes (7 KB)।

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

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

এই ত্রুটির সম্ভাব্য কারণগুলি দেখার আগে, অনুরোধ লাইনটির অর্থ কী এবং কীভাবে এর আকার পরীক্ষা করা যায় তা বোঝা যাক।

অনুরোধ-লাইন বোঝা

একটি সাধারণ HTTP অনুরোধ তিনটি অংশ নিয়ে গঠিত:

  1. অনুরোধ-লাইন
  2. (HTTP হেডারের সেট)
  3. [শরীর]

অনুরোধ লাইনটি নীচে দেখানো হিসাবে তিনটি অংশ নিয়ে গঠিত।

Request-Line = <Method> <Request-URI> <HTTP-Version>

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

নিম্নলিখিত নমুনা স্ক্রিনশটটি একটি সাধারণ curl অনুরোধ, অনুরোধের অংশ (অনুরোধ-লাইনের সাথে) এবং প্রতিক্রিয়া অংশ দেখায়।

অনুরোধ-লাইনের আকার বোঝা

  1. উপরে আলোচিত নমুনায়, অনুরোধের শুরুর লাইন (প্রথম লাইন), যাকে অনুরোধ-লাইন হিসাবেও উল্লেখ করা হয়, নিম্নরূপ:
    GET /test/ HTTP/1.1

    অনুরোধ-লাইনের আকার হল ~19 bytes কারণ এতে 19 ASCII characters রয়েছে। যেহেতু এটি Apigee Edge-এ অনুমোদিত সীমার মধ্যে, তাই অনুরোধটি কোনো ত্রুটি ছাড়াই প্রক্রিয়া করা হয় এবং আপনি একটি সফল প্রতিক্রিয়া পান।

  2. একইভাবে আপনি যদি উপরে দেখানো ত্রুটি বার্তার faultstring দেখেন, এতে রয়েছে "request line size exceeding 7,168" । এটি নির্দেশ করে যে ক্লায়েন্ট দ্বারা করা HTTP অনুরোধে অনুরোধ-লাইন 7,168 বাইট অতিক্রম করেছে।

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

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

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

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

API মনিটরিং

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

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

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

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

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

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

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

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

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

    • স্ট্যাটাস কোড: 414
    • ফল্ট উত্স: apigee
    • ফল্ট কোড: protocol.http.TooBigLine
    • অনুরোধের দৈর্ঘ্য(বাইট): 7244 (> 7KB)
  10. যদি ফল্ট সোর্সের মান apigee বা MP থাকে, ফল্ট কোডের মান protocol.http.TooBigLine থাকে Apigee মধ্যে .

ট্রেস টুল

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

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

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

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

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

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

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

    প্রতিক্রিয়া শিরোনাম মান
    এক্স-অ্যাপিজি-ফল্ট-কোড protocol.http.TooBigLine
    এক্স-অ্যাপিজি-ফল্ট-উৎস policy

    অনুরোধের দৈর্ঘ্য নোট করুন: 7244 (7.244KB > অনুমোদিত সীমা)

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

রোগ নির্ণয়

  1. এপিআই মনিটরিং, ট্রেস টুল বা এনজিআইএনএক্স অ্যাক্সেস লগ ব্যবহার করে দেখা ত্রুটির জন্য ফল্ট কোড , ফল্ট সোর্স এবং অনুরোধ-দৈর্ঘ্যের আকার নির্ধারণ করুন, যেমন সাধারণ নির্ণয়ের ধাপে ব্যাখ্যা করা হয়েছে।
  2. যদি ফল্ট সোর্সের মান apigee বা MP থাকে, তাহলে এটি নির্দেশ করে যে ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা Apigee-এ পাঠানো অনুরোধের আকার Apigee এজ-এ অনুমোদিত সীমার চেয়ে বেশি।
  3. নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে আপনি যাচাই করতে পারেন যে অনুরোধ লাইনের আকার 7 KB অনুমোদিত সীমা অতিক্রম করেছে:

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

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

    Apigee Edge থেকে প্রাপ্ত সম্পূর্ণ ত্রুটির বার্তায় আপনার অ্যাক্সেস থাকলে, faultstring পড়ুন। faultstring নির্দেশ করে যে অনুরোধ-লাইনের আকার অনুমোদিত সীমা 7 KB অতিক্রম করেছে৷

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

    "faultstring":"request line size exceeding 7,168"

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

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

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

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

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

      curl http://<hostalias>/testtoobigline?_qparam=000000000000000000……..000000<trimmed> -k -X POST
      

      উপরের ক্ষেত্রে, qparam এর ক্যোয়ারী প্যারামিটারের মান 7 KB-এর চেয়ে বড়, অর্থাৎ এতে 7 K-এর বেশি ASCII অক্ষর রয়েছে৷

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

    বার্তা প্রসেসর লগ

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

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

    1. বার্তা প্রসেসর লগ চেক করুন:

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

    2. একটি নির্দিষ্ট সময়কালের মধ্যে (যদি সমস্যাটি অতীতে ঘটে থাকে) কোন 414 ত্রুটি আছে কিনা বা 414 সাথে এখনও কোনও অনুরোধ ব্যর্থ হয়েছে কিনা তা দেখতে অনুসন্ধান করুন। আপনি নিম্নলিখিত অনুসন্ধান স্ট্রিং ব্যবহার করতে পারেন.
      grep -ri "exceeding"
      
      grep -ri "RequestURITooLong"
      
    3. আপনি system.log থেকে নিম্নলিখিতগুলির অনুরূপ লাইনগুলি পাবেন:
      2021-07-12 08:53:31,461  NIOThread@0 ERROR ADAPTORS.HTTP.FLOW -
      AbstractRequestListener.onException() : Request:null, uri:null,
      message Id:null, exception:com.apigee.errors.http.user.RequestURITooLong{
      code = protocol.http.TooBigLine, message = request line size exceeding 7,168,
      associated contexts = []}, context:Context@366f4217
      input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.195.90:8443
      Local:192.168.67.23:34256]@301912 useCount=1 bytesRead=0 bytesWritten=45849
      age=2254670ms lastIO=0ms isOpen=true)

      উপরের ত্রুটি বার্তায় পাঠ্য message = request line size exceeding 7,168 তা নির্দেশ করে যে অনুরোধের URI আকার 7 KB-এর বেশি। অতএব, Apigee Edge ব্যতিক্রমটি com.apigee.errors.http.user.RequestURITooLong ছুঁড়ে দেয় এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে ফল্ট কোড protocol.http.TooBigline .http.TooBigline সহ 414 স্ট্যাটাস কোড প্রদান করে।

রেজোলিউশন

আকার ঠিক করুন

বিকল্প # 1 [প্রস্তাবিত]: ক্লায়েন্ট অ্যাপ্লিকেশনটি যাতে অনুমোদিত সীমার চেয়ে বেশি ইউআরআই আকারের অনুরোধ না পাঠায় তা ঠিক করুন

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

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

    curl https://<host>/testtoobigline -k -X GET -d '{_qparam=000000000000000000<trimmed>}' -v
    
  3. যদি এটি পছন্দসই হয় এবং আপনি অনুমোদিত সীমার চেয়ে বেশি একটি URI পাঠাতে চান তবে পরবর্তী বিকল্পগুলিতে যান৷

CwC

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

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

সীমা

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

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

বর্তমান সীমা চেক কিভাবে?

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

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

    এটি নির্দেশ করে যে ব্যক্তিগত ক্লাউডের জন্য Apigee-এ কনফিগার করা অনুরোধ-লাইনের আকারের সীমা হল 7 KB৷

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

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

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

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

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

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

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