500 অভ্যন্তরীণ সার্ভার ত্রুটি - ব্যাকএন্ড সার্ভার

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

ভিডিও

ভিডিও বর্ণনা
৫০০ ইন্টারনাল সার্ভার এরর - ব্যাকএন্ডের কারণে ব্যাকএন্ড সার্ভারের কারণে সৃষ্ট একটি রিয়েল-টাইম 500 Internal Server Error দেখানো হয়েছে এবং এর সাথে ত্রুটিটি ট্রাবলশুট ও সমাধান করার ধাপগুলোও উল্লেখ করা হয়েছে।

লক্ষণ

ক্লায়েন্ট অ্যাপ্লিকেশনটি এপিআই কলের প্রতিক্রিয়া হিসেবে Internal Server Error বার্তা সহ একটি 500 HTTP স্ট্যাটাস কোড পায়।

HTTP স্ট্যাটাস কোড 500 হলো একটি সাধারণ ত্রুটিপূর্ণ প্রতিক্রিয়া। এর অর্থ হলো, সার্ভার এমন একটি অপ্রত্যাশিত পরিস্থিতির সম্মুখীন হয়েছে যা অনুরোধটি পূরণ করতে বাধা দিয়েছে। সাধারণত যখন অন্য কোনো ত্রুটি কোড উপযুক্ত হয় না, তখন সার্ভার এই ত্রুটিটি ফেরত দেয়।

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

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

HTTP/1.1 500 Internal Server Error

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

নমুনা #১

নমুনা ব্যাকএন্ড সার্ভার প্রতিক্রিয়া #১

{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}

নমুনা #২

নমুনা ব্যাকএন্ড সার্ভার প্রতিক্রিয়া #২

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <Body>
      <Error>
         <code>500</code>
         <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
      </Error>
   </Body>
</Envelope>

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

বিভিন্ন কারণে ব্যাকএন্ড সার্ভার থেকে 500 Internal Server Error আসতে পারে। এই প্লেবুকটিতে সাধারণ কিছু ধাপ অনুসরণ করে কারণ নির্বিশেষে এই এররটি কীভাবে ট্রাবলশুট ও সমাধান করা যায়, তা ব্যাখ্যা করা হয়েছে।

এই সমস্যার সম্ভাব্য কারণগুলো নিম্নরূপ:

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
ব্যাকএন্ড সার্ভারে ত্রুটি কোনো কারণে ব্যাকএন্ড সার্ভারটি বিকল হতে পারে। এজ প্রাইভেট এবং পাবলিক ক্লাউড ব্যবহারকারীরা

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

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

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

পদ্ধতি #১: এপিআই মনিটরিং ব্যবহার করা

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

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

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

  6. নীচে দেখানো অনুযায়ী, যে সেলটিতে messaging.adaptors.http.flow.ErrorResponseCode ফল্ট কোডটি রয়েছে, সেটি নির্বাচন করুন:

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

  7. ফল্ট কোড messaging.adaptors.http.flow.ErrorResponseCode সম্পর্কিত তথ্য নিচে দেখানো অনুযায়ী প্রদর্শিত হয়:

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

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

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

  9. লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
    • অনুরোধ বার্তা আইডি
    • স্ট্যাটাস কোড: 500
    • ত্রুটির উৎস: target
    • ত্রুটি কোড: messaging.adaptors.http.flow.ErrorResponseCode

ট্রেস

পদ্ধতি #২: ট্রেস টুল ব্যবহার করা

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

  1. ট্রেস সেশনটি সক্রিয় করুন এবং হয়
    • messaging.adaptors.http.flow.ErrorResponseCode এরর কোড সহ 500 Internal Server Error ত্রুটিটি ঘটার জন্য অপেক্ষা করুন, অথবা
    • আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন, 500 Internal Server Error সমস্যাটি পুনরায় তৈরি করতে এপিআই কলটি করুন।
  2. নিশ্চিত করুন যে 'Show all FlowInfos' চালু আছে:

  3. ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন এবং ট্রেসটি পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
  5. আপনি সাধারণত টার্গেট সার্ভার থেকে রেসপন্স পাওয়ার পরের ফ্লো-তে ত্রুটিটি দেখতে পাবেন, যেমনটি নিচে দেখানো হয়েছে:

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

  6. ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ডেড) ফেজটিতে যান এবং এটিতে ক্লিক করুন।
  7. Phase Details Response Headers সেকশন পর্যন্ত স্ক্রল ডাউন করুন এবং নিচে দেখানো অনুযায়ী X-Apigee-fault-code , X-Apigee-fault-source এবং X-Apigee-Message-ID- এর মান নির্ধারণ করুন:

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

  8. X-Apigee-fault-code , X-Apigee-fault-source , এবং X-Apigee-Message-ID - এই মানগুলো লক্ষ্য করুন:
  9. প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড messaging.adaptors.http.flow.ErrorResponseCode
    এক্স-এপিজি-ফল্ট-সোর্স target
    এক্স-এপিজি-মেসেজ-আইডি MESSAGE_ID

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

পদ্ধতি #৩: NGINX অ্যাক্সেস লগ ব্যবহার করা

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

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

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

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

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

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

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

    হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড messaging.adaptors.http.flow.ErrorResponseCode
    এক্স-এপিজি-ফল্ট-সোর্স target

কারণ: ব্যাকএন্ড সার্ভারে ত্রুটি

রোগ নির্ণয়

ব্যাকএন্ড সার্ভার থেকে আসা 500 Internal Server Error বিভিন্ন কারণে হতে পারে। আপনাকে প্রতিটি পরিস্থিতি আলাদাভাবে খতিয়ে দেখতে হবে।

  1. সাধারণ রোগ নির্ণয়ের ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে পরিলক্ষিত ত্রুটির জন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ধারণ করুন।
  2. যদি ফল্ট সোর্স (Fault Source) ' target এবং ফল্ট কোড (Fault Code) ' messaging.adaptors.http.flow.ErrorResponseCode ' হয়, তাহলে তা নির্দেশ করে যে ত্রুটিটি ব্যাকএন্ড সার্ভার থেকে ফেরত এসেছে।
  3. সমস্যাটির কারণ নির্ণয় করতে আপনি নিচের ধাপগুলোর যেকোনো একটি ব্যবহার করতে পারেন:

    ট্রেস

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

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

    1. ট্রেস থেকে, 500 Internal Server Error কারণে ব্যর্থ হওয়া এপিআই অনুরোধটি নির্বাচন করুন।
    2. নিচের চিত্রে দেখানো অনুযায়ী, ব্যর্থ হওয়া এপিআই অনুরোধ থেকে টার্গেট সার্ভার পর্যায় থেকে প্রাপ্ত প্রতিক্রিয়াটি নির্বাচন করুন:

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

    3. নিচে স্ক্রল করে 'Phase Details' সেকশনে যান এবং 'Response Content' চেক করুন, যেখানে ব্যাকএন্ড সার্ভার থেকে আসা রেসপন্সটি রয়েছে।

      নমুনা উত্তরের বিষয়বস্তু:

      <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <Body>
            <Error>
               <code>500</code>
               <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
            </Error>
         </Body>
      </Envelope>

      উপরের প্রতিক্রিয়াটিতে লক্ষ্য করুন যে, ব্যাকএন্ড সার্ভার থেকে আসা ত্রুটির বার্তাটি হলো 'অনুমোদিত নয়' (Not Authorised)। এটি ইঙ্গিত দেয় যে ব্যবহারকারী সম্ভবত ভুল ক্রেডেনশিয়াল দিয়েছেন এবং সেই কারণেই তিনি এই ত্রুটিটি পাচ্ছেন।

    ব্যাকএন্ড সার্ভারকে কল করুন

    ব্যাকএন্ড সার্ভারে সরাসরি কল করা:

    আপনি সরাসরি ব্যাকএন্ড সার্ভারে কল করতে পারেন এবং:

    • Apigee Edge-এর মাধ্যমে অনুরোধ করার সময় প্রাপ্ত 500 Internal Server Error প্রতিক্রিয়ার মতোই একই প্রতিক্রিয়া আপনি পাচ্ছেন কিনা তা যাচাই করুন।
    • ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত ত্রুটির বার্তা (প্রতিক্রিয়া) পরীক্ষা করুন।

    ব্যাকএন্ড সার্ভারে সরাসরি কল করার জন্য নিম্নলিখিত ধাপগুলো অনুসরণ করুন:

    1. অনুরোধের অংশ হিসেবে ব্যাকএন্ড সার্ভারে পাঠানোর জন্য প্রয়োজনীয় সমস্ত হেডার, কোয়েরি প্যারামিটার এবং ক্রেডেনশিয়াল আপনার কাছে আছে কিনা, তা নিশ্চিত করুন।
    2. যদি ব্যাকএন্ড সার্ভিসটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য হয়, তাহলে আপনি curl কমান্ড, Postman বা অন্য কোনো REST ক্লায়েন্ট ব্যবহার করে সরাসরি ব্যাকএন্ড সার্ভার API-কে কল করতে পারেন।
    3. যদি ব্যাকএন্ড সার্ভারটি শুধুমাত্র মেসেজ প্রসেসর থেকে অ্যাক্সেসযোগ্য হয়, তাহলে আপনি curl কমান্ড, Postman বা অন্য কোনো REST ক্লায়েন্ট ব্যবহার করে সরাসরি মেসেজ প্রসেসর থেকে ব্যাকএন্ড সার্ভার API কল করতে পারবেন।

    4. ব্যাকএন্ড সার্ভিসটি সত্যিই 500 Internal Server Error ফেরত দিচ্ছে কিনা তা যাচাই করুন এবং ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত এরর মেসেজ (রেসপন্স) পরীক্ষা করে এই এররের কারণ নির্ণয় করুন।

    ব্যাকএন্ড সার্ভার লগ

    ব্যাকএন্ড সার্ভার লগ ব্যবহার করে

    1. ব্যাকএন্ড সার্ভারের লগগুলো পর্যালোচনা করুন এবং ত্রুটি ও এর কারণ সম্পর্কে আরও বিস্তারিত তথ্য জানার চেষ্টা করুন।
    2. সম্ভব হলে, ত্রুটি এবং এর কারণ সম্পর্কে আরও বিস্তারিত জানতে ব্যাকএন্ড সার্ভারে ডিবাগ মোড চালু করুন।
  4. ব্যর্থ হওয়া এপিআই প্রক্সির নির্দিষ্ট টার্গেট এন্ডপয়েন্টে আপনি প্রক্সি চেইনিং ব্যবহার করছেন কিনা তা পরীক্ষা করে দেখুন; অর্থাৎ, টার্গেট সার্ভার/টার্গেট এন্ডপয়েন্টটি Apigee Edge-এ অন্য কোনো প্রক্সিকে কল করছে কিনা। এটি নির্ধারণ করতে:

    1. যদি আপনার কাছে ব্যর্থ হওয়া অনুরোধটির ট্রেস থাকে, তাহলে 'Request sent to target server' পর্যায়ে যান এবং 'Show Curl'-এ ক্লিক করুন।

    2. "Curl for Request Sent to Target Server" উইন্ডোটি খোলে, যেখান থেকে আপনি টার্গেট সার্ভারের হোস্ট অ্যালিয়াস নির্ধারণ করতে পারেন।
    3. আপনার এপিআই প্রক্সির টার্গেট এন্ডপয়েন্টটি পর্যালোচনা করুন এবং যাচাই করুন যে টার্গেট সার্ভারের ব্যাকএন্ড সার্ভার ইউআরএল বা হোস্টনেমটি অন্য কোনো প্রক্সি বা আপনার নিজের ব্যাকএন্ড সার্ভারকে নির্দেশ করছে কিনা।
    4. যদি টার্গেট সার্ভার হোস্ট অ্যালিয়াসটি কোনো ভার্চুয়াল হোস্ট অ্যালিয়াসকে নির্দেশ করে, তাহলে এটি প্রক্সি চেইনিং। এই ক্ষেত্রে, চেইনড প্রক্সির জন্য আপনাকে উপরের সমস্ত ধাপগুলো পুনরাবৃত্তি করতে হবে, যতক্ষণ না আপনি নির্ধারণ করতে পারেন যে আসলে কী কারণে 500 Internal Server Error । এইসব ক্ষেত্রে, 500 Internal Server Error অন্যান্য চেইনড প্রক্সির অন্যান্য পর্যায়েও ঘটতে পারে, যা এই প্লেবুকে বা 500 ইন্টারনাল সার্ভার এরর প্লেবুকে দেওয়া নির্দেশাবলী ব্যবহার করে নির্ণয় ও সমাধান করা যেতে পারে।
    5. যদি টার্গেট সার্ভার হোস্ট অ্যালিয়াস আপনার ব্যাকএন্ড সার্ভারকে নির্দেশ করে, তাহলে রেজোলিউশন- এ যান।

সমাধান

যদি নিশ্চিত হওয়া যায় যে 500 এররটি ব্যাকএন্ড সার্ভার থেকে আসছে, তাহলে সমস্যাটি যথাযথভাবে সমাধান করার জন্য আপনার ব্যাকএন্ড সার্ভার টিমের সাথে কাজ করুন।

উপরে আলোচিত উদাহরণে, এই সমস্যাটি সমাধান করার জন্য আপনাকে ব্যবহারকারীদের কাছে বৈধ পরিচয়পত্র চাইতে হতে পারে।

লক্ষণীয় গুরুত্বপূর্ণ বিষয়সমূহ

  1. 500 Internal Server Error এর জন্য ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত প্রকৃত এরর মেসেজটি কেবল তখনই দেখা যাবে, যদি আপনি ব্যর্থ হওয়া রিকোয়েস্টগুলোর ট্রেস সেশন ক্যাপচার করে থাকেন।
  2. নিরাপত্তাজনিত কারণে ব্যাকএন্ড সার্ভারের প্রতিক্রিয়া এপিআই মনিটরিং, এনজিআইএনএক্স অ্যাক্সেস লগ বা মেসেজ প্রসেসর লগে লিপিবদ্ধ করা হবে না।
  3. 500 Internal Server Error সম্পর্কে আরও বিস্তারিত জানতে এবং/অথবা ব্যাকএন্ড সার্ভার থেকে পাঠানো এরর মেসেজটি দেখতে, আপনি ব্যাকএন্ড সার্ভারের লগ পর্যালোচনা করতে পারেন অথবা ব্যাকএন্ডে ডিবাগ মোড চালু করতে পারেন।

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

উপরোক্ত নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং Apigee Edge Support-এর সাথে যোগাযোগ করুন।

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

  • সংস্থার নাম
  • পরিবেশের নাম
  • এপিআই প্রক্সি নাম
  • 500 ত্রুটিটি পুনরুৎপাদন করার জন্য সম্পূর্ণ curl কমান্ডটি ব্যবহার করুন।
  • 500 Internal Server Error সহ অনুরোধগুলি ধারণকারী ট্রেস ফাইল
  • যদি বর্তমানে 500 ত্রুটি না ঘটে থাকে, তাহলে অতীতে যখন 500 ত্রুটি ঘটেছিল সেই সময়কাল এবং টাইমজোনের তথ্য প্রদান করুন।

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

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