414 Request-URI Too Long - TooBigLine

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

সমস্যার উপসর্গ

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

সমস্যা সংক্রান্ত মেসেজ

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

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 (৭ KB)।

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

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

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

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

একটি সাধারণ HTTP অনুরোধে তিনটি অংশ থাকে:

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

অনুরোধ লাইনে নিচে দেখানো তিনটি অংশ থাকে।

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

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

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

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

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

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

  2. একইভাবে, উপরে দেখানো সমস্যার মেসেজে faultstring দেখলে, এতে "request line size exceeding 7,168" আছে। এটি থেকে বোঝা যায় যে ক্লায়েন্টের করা HTTP অনুরোধের Request-Line ৭১৬৮ বাইটের সীমা অতিক্রম করেছে।

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

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

সাধারণ ডায়াগনসিস ধাপ

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

API মনিটরিং

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

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

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

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

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

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

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

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

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

    • স্ট্যাটাস কোড: 414
    • সমস্যার সোর্স: apigee
    • সমস্যার কোড: protocol.http.TooBigLine.
    • অনুরোধের দৈর্ঘ্য(বাইট): 7244 (> 7KB)
  10. Fault Source-এর ভ্যালু apigee বা MP হলে, Fault Code-এর ভ্যালু protocol.http.TooBigLine এবং Request-Length ৭ KB-এর বেশি হলে, এটি ইঙ্গিত করে যে ক্লায়েন্টের HTTP অনুরোধে Apigee-তে অনুমোদিত সীমার চেয়ে বেশি বড় অনুরোধ URI আছে।

ট্রেস টুল

NGINX

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-fault-source-এর ভ্যালু নির্ধারণ করুন।

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

    রেসপন্স হেডার ভ্যালু
    X-Apigee-fault-code protocol.http.TooBigLine
    X-Apigee-fault-source policy

    অনুরোধের দৈর্ঘ্য মনে রাখবেন: 7244 (৭.২৪৪KB > অনুমোদিত সীমা)

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

ডায়াগনসিস

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

    সমস্যা সংক্রান্ত মেসেজ

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

    Apigee Edge থেকে পাওয়া সম্পূর্ণ সমস্যার মেসেজে আপনার অ্যাক্সেস থাকলে, তাহলে faultstring দেখুন। faultstring থেকে বোঝা যায় যে অনুরোধ লাইনের সাইজ অনুমোদিত ৭ কেবি সীমা ছাড়িয়ে গেছে।

    সমস্যার মেসেজের নমুনা:

    "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 ৭ KB-এর থেকে বড়, অর্থাৎ এতে ৭ K-এর বেশি ASCII অক্ষর আছে।

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

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

    Message Processor লগ ব্যবহার করে যাচাই করতে:

    আপনি Private Cloud ব্যবহারকারী হলে, Message Processor লগ ব্যবহার করে যাচাই করতে পারবেন যে Request-Line সাইজ 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-এর সাইজ ৭ কেবির বেশি। তাই, Apigee Edge ব্যতিক্রম com.apigee.errors.http.user.RequestURITooLong দেখায় এবং 414 ফল্ট কোড সহ স্ট্যাটাস কোড protocol.http.TooBigline ক্লায়েন্ট অ্যাপ্লিকেশনকে রিটার্ন করে।

রেজোলিউশন

সাইজ ঠিক করা

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

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

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

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

CwC

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

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

সীমা

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

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

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

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

  1. মেসেজ প্রসেসর মেশিনে, প্রপার্টি HTTPRequest.line.limit খুঁজে দেখুন /opt/apigee/edge-message-processor/conf ডিরেক্টরি এবং নিচে দেখানো ভ্যালু সেট করা হয়েছে কিনা তা চেক করুন:
    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.properties-এ 7k ভ্যালু সহ সেট করা হয়েছে।

    এর থেকে বোঝা যায় যে প্রাইভেট ক্লাউডের জন্য Apigee-তে কনফিগার করা Request-Line সাইজের সীমা হল ৭ কেবি।

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

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

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

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

  • সংস্থার নাম
  • পরিবেশের নাম
  • API প্রক্সির নাম
  • 414 সমস্যাটি আবার তৈরি করতে curl কমান্ড সম্পূর্ণ করুন
  • API অনুরোধের জন্য ট্রেস ফাইল

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

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