500 ইন্টার্নাল সার্ভার সমস্যা - ব্যাকএন্ড সার্ভার

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

ভিডিও

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

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

ক্লায়েন্ট অ্যাপ্লিকেশন, API কলের উত্তর হিসেবে 500 HTTP স্ট্যাটাস কোড সহ Internal Server Error মেসেজ পায়।

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"}

নমুনা #২

Sample Backend Server Response #2

<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 ফেরত দিতে পারে। এই প্লেবুকে সাধারণ ধাপ ব্যবহার করে কীভাবে সমস্যার সমাধান করতে হয় এবং এর কারণ যাই হোক না কেন, এই সমস্যার সমাধান কীভাবে করতে হয় তা ব্যাখ্যা করা হয়েছে।

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

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

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

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

API মনিটরিং

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

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

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

  3. বিশ্লেষণ করুন > API মনিটরিং > তদন্ত করুন পৃষ্ঠায় নেভিগেট করুন।
  4. আপনি যে নির্দিষ্ট সময়সীমার মধ্যে সমস্যাটি লক্ষ্য করেছেন সেটি বেছে নিন।
  5. সময় অনুযায়ী সমস্যার কোড প্লট করুন।

  6. এমন একটি সেল বেছে নিন যেখানে ফল্ট কোড messaging.adaptors.http.flow.ErrorResponseCode দেখানো হয়েছে নিচে:

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

  7. সমস্যার কোড সম্পর্কে তথ্য messaging.adaptors.http.flow.ErrorResponseCode এইভাবে দেখানো হয় নিচে দেখানো হল:

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

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

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

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

ট্রেস

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

Trace টুল ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

  1. ট্রেস সেশন চালু করুন এবং এগুলির মধ্যে একটি বেছে নিন:
    • সমস্যার কোড সহ 500 Internal Server Error সমস্যার জন্য অপেক্ষা করুন messaging.adaptors.http.flow.ErrorResponseCode অথবা
    • আপনি যদি সমস্যাটি আবার তৈরি করতে পারেন, তাহলে সমস্যাটি আবার তৈরি করতে API কল করুন 500 Internal Server Error
  2. সব FlowInfo দেখুন বিকল্প চালু আছে কিনা দেখুন:

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

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

  6. ট্রেসে AX (Analytics ডেটা রেকর্ড করা হয়েছে) ফেজে নেভিগেট করে সেটিতে ক্লিক করুন।
  7. নিচের দিকে স্ক্রল করে ফেজ সংক্রান্ত বিবরণের উত্তর হেডার বিভাগে যান এবং 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. রেসপন্স হেডার ভ্যালু
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target
    X-Apigee-Message-ID MESSAGE_ID

NGINX

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

NGINX অ্যাক্সেস লগ ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

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

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

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

    NGINX অ্যাক্সেস লগ থেকে 500 সমস্যার নমুনা:

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

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

    হেডার ভ্যালু
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target

কারণ: ব্যাকএন্ড সার্ভারে সমস্যা

ডায়াগনসিস

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

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

    ট্রেস

    Trace ব্যবহার করে:

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

    1. Trace-এ, 500 Internal Server Error সহ ব্যর্থ হওয়া API অনুরোধ বেছে নিন।
    2. নিচের ছবিতে দেখানো অনুযায়ী, ব্যর্থ API অনুরোধ থেকে টার্গেট সার্ভার থেকে পাওয়া উত্তর ফেজ বেছে নিন:

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

    3. নিচের দিকে স্ক্রল করে ফেজ বিবরণ বিভাগে যান এবং উত্তর কন্টেন্ট চেক করুন,এতে ব্যাকএন্ড সার্ভারের উত্তর থাকে।

      উত্তরের নমুনা কন্টেন্ট:

      <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>

      উপরের উত্তরে, মনে রাখবেন যে ব্যাকএন্ড সার্ভার থেকে পাওয়া সমস্যার মেসেজটি হল অননুমোদিত। এর থেকে বোঝা যায় যে ব্যবহারকারী হয়ত ভুল ক্রেডেনশিয়াল দিয়েছেন এবং সেই কারণেই এই সমস্যাটি হচ্ছে।

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

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

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

    • 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. আপনি ব্যর্থ API প্রক্সির নির্দিষ্ট টার্গেট এন্ডপয়েন্টে প্রক্সি চেইনিং ব্যবহার করছেন কিনা তা চেক করুন; অর্থাৎ, টার্গেট সার্ভার/টার্গেট এন্ডপয়েন্ট Apigee Edge-এ অন্য কোনও প্রক্সি ইনভোক করছে কিনা। এটি নির্ধারণ করতে:

    1. অনুরোধ সম্পূর্ণ না হওয়ার ট্রেস আপনার কাছে থাকলে, টার্গেট সার্ভারে অনুরোধ পাঠানো হয়েছে ধাপে নেভিগেট করে Curl দেখুন বিকল্পে ক্লিক করুন।

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

রেজোলিউশন

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

উপরে আলোচনা করা উদাহরণে, এই সমস্যা সমাধান করতে আপনাকে ব্যবহারকারীকে বৈধ ক্রেডেনশিয়াল দেওয়ার অনুরোধ করতে হতে পারে।

মনে রাখার মতো গুরুত্বপূর্ণ বিষয়

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

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

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

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

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

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

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