503 পরিষেবা অনুপলব্ধ৷

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

ভিডিও

503 ত্রুটি সম্পর্কে আরও তথ্যের জন্য নিম্নলিখিত ভিডিওগুলি দেখুন:

ভিডিও বর্ণনা
DNS সমস্যার কারণে সৃষ্ট 503 সার্ভিস আনঅ্যাভেইলেবল এরর-এর ট্রাবলশুট ও সমাধান করুন নিম্নলিখিত বিষয়গুলো সম্পর্কে জানুন:
  • Apigee Edge-এ DNS রেজোলিউশন এবং নেটওয়ার্ক-সম্পর্কিত সমস্যার কারণে 503 Service Unavailable ত্রুটি দেখা দেয়।
  • DNS রেজোলিউশন সমস্যার কারণে সৃষ্ট একটি রিয়েল-টাইম 503 সার্ভিস আনঅ্যাভেইলেবল ত্রুটির ট্রাবলশুটিং এবং সমাধান
নেটওয়ার্ক সমস্যার কারণে সৃষ্ট 503 সার্ভিস আনঅ্যাভেইলেবল এরর-এর ট্রাবলশুট ও সমাধান করুন। Apigee Edge-এ নেটওয়ার্ক সমস্যার কারণে সৃষ্ট রিয়েল-টাইম 503 সার্ভিস আনঅ্যাভেইলেবল এরর-এর ট্রাবলশুটিং এবং সমাধান

লক্ষণ

একটি এপিআই প্রক্সি কলের পর ক্লায়েন্ট অ্যাপ্লিকেশনটি 'Service Unavailable' বার্তা সহ একটি HTTP প্রতিক্রিয়া স্ট্যাটাস 503 পায়।

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

আপনি নিম্নলিখিত ত্রুটি বার্তাটি দেখতে পাবেন:

HTTP/1.1 503 Service Unavailable
      

আপনি HTTP রেসপন্সে নিম্নলিখিত এরর মেসেজটিও দেখতে পারেন:

পরিষেবা অনুপলব্ধ

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
       }
    }
}
      

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

ব্যাকএন্ড সার্ভারের সাথে যোগাযোগের সময় কানেকশন টাইম আউট, ভুল হোস্ট নেম, বা SSL হ্যান্ডশেক ব্যর্থতার কারণে Apigee Edge-এর মেসেজ প্রসেসরে কোনো ত্রুটি দেখা দিলে, messaging.adaptors.http.flow.ServiceUnavailable এরর কোড সহ HTTP রেসপন্স 503 Service Unavailable প্রদর্শিত হয়।

503 সার্ভিস আনঅ্যাভেইলেবল রেসপন্সটির সম্ভাব্য কারণগুলো হলো:

কারণ বর্ণনা কে সমস্যা সমাধানের ধাপগুলো সম্পাদন করতে পারে
ভুল ডিএনএস রেজোলিউশনের কারণে সংযোগ ত্রুটি টার্গেট সার্ভারের ডিএনএস রেজোলিউশনের ফলে ভুল আইপি অ্যাড্রেস পাওয়া যায়, যার কারণে সংযোগে ত্রুটি দেখা দেয়। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
সংযোগ ত্রুটি নেটওয়ার্ক বা সংযোগ সমস্যার কারণে ক্লায়েন্ট সার্ভারের সাথে সংযোগ স্থাপন করতে পারছে না। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
ভুল টার্গেট সার্ভার হোস্ট নাম নির্দিষ্ট করা টার্গেট সার্ভার হোস্টটি ভুল অথবা এতে অবাঞ্ছিত অক্ষর (যেমন স্পেস) রয়েছে। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
SSL হ্যান্ডশেক ব্যর্থতা ক্লায়েন্ট এবং সার্ভারের মধ্যে TLS/SSL হ্যান্ডশেক ব্যর্থ হয়েছে। (এই ধরনের সমস্যার সমাধান একটি পৃথক বিষয়ে আলোচনা করা হয়েছে।) এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

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

ব্যর্থ অনুরোধটির মেসেজ আইডি নির্ধারণ করুন।

ট্রেস টুল

ট্রেস টুল ব্যবহার করে ব্যর্থ হওয়া অনুরোধের মেসেজ আইডি নির্ধারণ করতে:

  1. যদি সমস্যাটি এখনও সক্রিয় থাকে, তাহলে প্রভাবিত API-টির জন্য ট্রেস সেশনটি সক্রিয় করুন।
  2. এপিআই কলটি করুন এবং সমস্যাটি পুনরায় তৈরি করুন - 503 সার্ভিস আনঅ্যাভেইলেবল, এরর কোড messaging.adaptors.http.flow.ServiceUnavailable.
  3. ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন।
  4. AX ফেজে যান এবং নিচের চিত্রে দেখানো অনুযায়ী ফেজ ডিটেইলস (Pphase Details) বিভাগে স্ক্রল ডাউন করে অনুরোধটির মেসেজ আইডি ( X-Apigee.Message-ID ) নির্ধারণ করুন।

    Message ID in Phase Details section

NGINX অ্যাক্সেস লগ

NGINX অ্যাক্সেস লগ ব্যবহার করে ব্যর্থ অনুরোধটির মেসেজ আইডি নির্ধারণ করতে:

503 ত্রুটির মেসেজ আইডি নির্ধারণ করতে আপনি NGINX অ্যাক্সেস লগও দেখতে পারেন। এটি বিশেষভাবে কার্যকর যদি সমস্যাটি অতীতে ঘটে থাকে অথবা যদি সমস্যাটি মাঝে মাঝে হয় এবং আপনি UI-তে এর ট্রেস ক্যাপচার করতে না পারেন। NGINX অ্যাক্সেস লগ থেকে এই তথ্য নির্ধারণ করতে নিম্নলিখিত ধাপগুলো অনুসরণ করুন:

  1. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন: ( /opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log )
  2. নির্দিষ্ট এপিআই প্রক্সির জন্য একটি নির্দিষ্ট সময়কালে কোনো ৫০৩ এরর আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো রিকোয়েস্ট ৫০৩ এরর-এর কারণে ফেইল করছে কিনা, তা অনুসন্ধান করুন।
  3. যদি X-Apigee-fault-code messaging.adaptors.http.flow.ServiceUnavailable সহ কোনো 503 Error থাকে, তাহলে নিম্নলিখিত উদাহরণে দেখানো অনুযায়ী এক বা একাধিক অনুরোধের মেসেজ আইডি নোট করুন:

    503 ত্রুটি প্রদর্শনকারী নমুনা এন্ট্রি

    Sample entry showing status code, message ID, fault source, and fault code

ভুল ডিএনএস রেজোলিউশনের কারণে সংযোগ ত্রুটি

রোগ নির্ণয়

  1. ব্যর্থ হওয়া অনুরোধটির মেসেজ আইডি নির্ণয় করুন।
  2. মেসেজ প্রসেসর লগে ( /opt/apigee/var/log/edge-message-processor/logs/system.log ) নির্দিষ্ট অনুরোধ বার্তা আইডিটি অনুসন্ধান করুন। আপনি নিম্নলিখিত ত্রুটিগুলি দেখতে পারেন:

    একটি onConnectTimeout ত্রুটি নির্দেশ করে যে মেসেজ প্রসেসর পূর্বনির্ধারিত সংযোগ সময়সীমার (ডিফল্ট: ৩ সেকেন্ড) মধ্যে ব্যাকএন্ড সার্ভারের সাথে সংযোগ স্থাপন করতে পারেনি।
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11  resolvedAddress=www.abc.com/22.22.22.22
    
    2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
          
  3. onConnectTimeout ত্রুটিতে প্রাপ্ত আইপি ঠিকানাটি নোট করুন এবং যাচাই করুন যে আইপি ঠিকানাটি আপনার ব্যাকএন্ড সার্ভারের জন্য বৈধ কিনা। যদি আইপি ঠিকানাটি বৈধ হয়, তাহলে Connection Errors- এ যান।
  4. যদি আইপি অ্যাড্রেসটি অবৈধ হয়, তাহলে এর প্রধান কারণ হতে পারে ডিএনএস রেজোলিউশন সংক্রান্ত সমস্যা।
  5. আরও কয়েকটি ব্যর্থ API অনুরোধের জন্য ধাপ ৩ এবং ধাপ ৪ পুনরাবৃত্তি করুন এবং যাচাই করুন যে আপনি একই বা অন্য কোনো অবৈধ IP ঠিকানা দেখতে পাচ্ছেন কিনা।
  6. মেসেজ প্রসেসর লগ ( /opt/apigee/var/log/edge-message-processor/logs/system.log ) -এ 'DNS Refresh' কীওয়ার্ডযুক্ত মেসেজগুলো খুঁজুন। মাঝে মাঝে মেসেজ প্রসেসরের ডিএনএস ক্যাশে কোনো ভুল বা অবৈধ আইপি অ্যাড্রেস যুক্ত হচ্ছে কি না, তা পরীক্ষা করুন।
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
          
  7. /etc/resolv.conf এ কনফিগার করা অথরিটেটিভ ডিএনএস সার্ভার বা নেম সার্ভারগুলোতে কোনো সমস্যা থাকলে এই সমস্যাটি হতে পারে।

    সাধারণত, ডিএনএস রেজোলিউশন সম্পাদনের জন্য এক বা একাধিক কর্তৃত্বপূর্ণ ডিএনএস সার্ভার কনফিগার করা থাকতে পারে। যদি কোনো কর্তৃত্বপূর্ণ ডিএনএস সার্ভার না থাকে, তাহলে এটি /etc/resolv.conf এ সেট করা কনফিগারেশনে ফিরে যাবে এবং যথাযথভাবে ডিএনএস রেজোলিউশন সম্পাদন করবে। উদাহরণস্বরূপ: যদি /etc/resolv.conf নির্দিষ্ট নেম সার্ভার ব্যবহার করার জন্য কনফিগার করা থাকে, তাহলে ডিএনএস রেজোলিউশন সম্পাদনের জন্য সেই নেম সার্ভারগুলোই ব্যবহৃত হবে।
  8. যদি /etc/resolv.conf এ উল্লেখিত কর্তৃত্বপূর্ণ DNS সার্ভার বা নেম সার্ভারগুলিতে কোনো সমস্যা থাকে, তাহলে ব্যাকএন্ড সার্ভারের হোস্টনেমগুলি ভুল/অবৈধ IP অ্যাড্রেসে রিজলভ হয়ে যাবে। এরপর এই ভুল/অবৈধ IP অ্যাড্রেসগুলি মেসেজ প্রসেসরের DNS ক্যাশে সংরক্ষিত হবে।
    1. যদি /etc/resolv.conf এ উল্লেখিত অথরিটেটিভ ডিএনএস সার্ভার বা নেম সার্ভারগুলির সমস্যাটি ক্রমাগত হতে থাকে, তাহলে ত্রুটিপূর্ণ/অবৈধ আইপি অ্যাড্রেসগুলি মেসেজ প্রসেসরের ডিএনএস ক্যাশে থেকে যাবে। যতক্ষণ পর্যন্ত এই ত্রুটিপূর্ণ আইপি অ্যাড্রেসগুলি মেসেজ প্রসেসরের ডিএনএস ক্যাশে সংরক্ষিত থাকবে, ততক্ষণ পর্যন্ত নির্দিষ্ট ব্যাকএন্ড সার্ভার ব্যবহারকারী সমস্ত এপিআই-এর অনুরোধগুলি 503 এরর দেখিয়ে ব্যর্থ হবে।
    2. যদি /etc/resolv.conf এ উল্লেখিত কর্তৃত্বপূর্ণ DNS সার্ভার বা নেম সার্ভার নিয়ে সমস্যাটি মাঝে মাঝে হয়, তাহলে DNS ক্যাশে ভালো এবং খারাপ IP অ্যাড্রেসগুলো মাঝে মাঝে জমা হতে থাকবে। এই ক্ষেত্রে, আপনি নির্দিষ্ট ব্যাকএন্ড সার্ভারটি ব্যবহারকারী সমস্ত API-এর জন্য মাঝে মাঝে 503 এরর দেখতে পাবেন।
  9. যদি ডিএনএস সার্ভারের সমস্যাটি দীর্ঘস্থায়ী হয়, তাহলে আপনি ক্রমাগত ব্যর্থতা দেখতে পাবেন। যদি ডিএনএস সার্ভারের সমস্যাটি মাঝে মাঝে হয়, তাহলে আপনি মাঝে মাঝে ব্যর্থতা দেখতে পাবেন। অর্থাৎ, যখনই ব্যাকএন্ড সার্ভারের হোস্টনেম ভুল আইপি অ্যাড্রেসে রিজলভ হয়, তখনই আপনি ৫০৩ এরর দেখতে পাবেন। আর যখন ব্যাকএন্ড সার্ভারের হোস্টনেমগুলো সঠিক আইপি অ্যাড্রেসে রিজলভ হয়, তখন আপনি সফল রেসপন্স দেখতে পাবেন।

সমাধান

অনুগ্রহ করে আপনার অপারেটিং সিস্টেম অ্যাডমিনিস্ট্রেটরের সাথে কাজ করে ডিএনএস সার্ভারগুলোর সমস্যাগুলো সমাধান করুন।

  1. যদি আপনার /etc/resolv.conf এ উল্লেখিত অথরিটেটিভ ডিএনএস সার্ভার বা নেম সার্ভার নিয়ে কোনো সমস্যা থাকে, তাহলে এই সমস্যাটির সমাধান করতে উপযুক্ত সার্ভারটি ঠিক করুন।
  2. যেসব সিস্টেমে মেসেজ প্রসেসর আছে, সেগুলোর /etc/resolv.conf ফাইলের কনফিগারেশনে কোনো সমস্যা থাকলে, সেই সমস্যাটি সমাধান করুন।

সংযোগ ত্রুটি

যখন একটি Apigee Edge Message Processor কোনো ব্যাকএন্ড সার্ভারের সাথে সংযোগ করার চেষ্টা করে এবং নিম্নলিখিত সমস্যাগুলির মধ্যে একটি ঘটে, তখন একটি সংযোগ ত্রুটি দেখা দেয়:

  • মেসেজ প্রসেসর পূর্বনির্ধারিত সংযোগ সময়সীমার মধ্যে সংযোগ স্থাপন করতে পারছে না। (ডিফল্ট: ৩ সেকেন্ড)
  • ব্যাকএন্ড সার্ভার সংযোগটি প্রত্যাখ্যান করছে।

রোগ নির্ণয়

  1. ব্যর্থ হওয়া অনুরোধটির মেসেজ আইডি নির্ণয় করুন।
  2. মেসেজ প্রসেসর লগে ( /opt/apigee/var/log/edge-message-processor/logs/system.log ) নির্দিষ্ট অনুরোধ বার্তা আইডিটি অনুসন্ধান করুন। আপনি নিম্নলিখিত ত্রুটিগুলি দেখতে পারেন:
    1. একটি onConnectTimeout ত্রুটি নির্দেশ করে যে মেসেজ প্রসেসর পূর্বনির্ধারিত সংযোগ সময়সীমার মধ্যে ব্যাকএন্ড সার্ভারের সাথে সংযোগ স্থাপন করতে পারেনি।
      2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11
      2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
    2. একটি java.net.ConnectException: Connection refused ত্রুটি নির্দেশ করে যে ব্যাকএন্ড সার্ভার সংযোগটি প্রত্যাখ্যান করেছে।
      14:40:16.531 +0530
      2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {}
      java.net.ConnectException: Connection refused
      at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75]
      at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75]
      at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na]
      at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
  3. প্রতিটি মেসেজ প্রসেসর থেকে telnet কমান্ড ব্যবহার করে সরাসরি নির্দিষ্ট ব্যাকএন্ড সার্ভারে সংযোগ করতে পারছেন কিনা তা পরীক্ষা করুন:
    1. যদি ব্যাকএন্ড সার্ভারটি একটিমাত্র আইপি অ্যাড্রেসে রিজলভ হয়, তাহলে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
      telnet BackendServer-IPaddress 443
                
    2. যদি ব্যাকএন্ড সার্ভারটি একাধিক আইপি অ্যাড্রেসে রিজলভ হয়, তাহলে নিচে দেখানো অনুযায়ী telnet কমান্ডে ব্যাকএন্ড সার্ভারের হোস্টনেম ব্যবহার করুন:
      telnet BackendServer-HostName 443
                
  4. আপনি যদি ব্যাকএন্ড সার্ভারে সংযোগ করতে পারেন, তাহলে আপনি Connected to backend-server মতো একটি বার্তা দেখতে পারেন। আপনি যদি ব্যাকএন্ড সার্ভারে সংযোগ করতে না পারেন, তবে এর কারণ হতে পারে যে নির্দিষ্ট ব্যাকএন্ড সার্ভারে মেসেজ প্রসেসরগুলোর আইপি অ্যাড্রেস অনুমোদিত তালিকায় (allowlisted) নেই।

সমাধান

এজ মেসেজ প্রসেসর থেকে আসা ট্র্যাফিককে আপনার ব্যাকএন্ড সার্ভার অ্যাক্সেস করার অনুমতি দিতে, নির্দিষ্ট ব্যাকএন্ড সার্ভারে মেসেজ প্রসেসরের আইপি অ্যাড্রেসগুলোতে অ্যাক্সেস দিন। উদাহরণস্বরূপ, লিনাক্সে, আপনি ব্যাকএন্ড সার্ভারে মেসেজ প্রসেসরের আইপি অ্যাড্রেসগুলো থেকে আসা ট্র্যাফিককে অনুমতি দেওয়ার জন্য iptables ব্যবহার করতে পারেন।

যদি সমস্যাটি অব্যাহত থাকে, তবে সমস্যাটি চিহ্নিত ও সমাধান করার জন্য আপনার নেটওয়ার্ক অ্যাডমিনিস্ট্রেটরের সাথে কাজ করুন। Apigee-এর কাছ থেকে আপনার আরও কোনো সহায়তার প্রয়োজন হলে, Apigee Support-এর সাথে যোগাযোগ করুন।

ভুল টার্গেট সার্ভার হোস্ট নাম

রোগ নির্ণয়

টার্গেট সার্ভারে নির্দিষ্ট করা হোস্ট নেম ভুল হলে, আপনি messaging.adaptors.http.flow.ServiceUnavailable. এরর কোড সহ 503 Service Unavailable রেসপন্স পেতে পারেন।

ট্রেস টুল

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

  1. যদি সমস্যাটি এখনও সক্রিয় থাকে, তাহলে প্রভাবিত API-টির জন্য ট্রেস সেশনটি সক্রিয় করুন।
  2. এপিআই কলটি করুন এবং সমস্যাটি পুনরায় তৈরি করুন - 503 সার্ভিস আনঅ্যাভেইলেবল, এরর কোড messaging.adaptors.http.flow.ServiceUnavailable.
  3. ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন।
  4. অনুসন্ধানের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
  5. যে FlowInfo-টিতে ত্রুটি রয়েছে, সেটি নির্বাচন করুন। আপনি error.cause ফিল্ডে আরও তথ্য পেতে পারেন, যা আপনাকে ব্যর্থতার কারণ জানিয়ে দেবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

    নমুনা অনুরোধটি ট্রেসে ত্রুটির কারণ দেখাচ্ছে।

    Sample request showing error.cause in the trace
  6. যদি আপনি লক্ষ্য করেন যে error.cause- এ Host not reachable দেখাচ্ছে, তাহলে এই ত্রুটির সম্ভাব্য কারণ নিম্নলিখিতগুলির মধ্যে একটি:
    • টার্গেট সার্ভার/টার্গেট এন্ডপয়েন্ট কনফিগারেশনে নির্দিষ্ট করা হোস্ট নামটি ভুল অথবা এতে অনাকাঙ্ক্ষিত স্পেস বা বিশেষ অক্ষর রয়েছে।

      উদাহরণস্বরূপ, হোস্ট নেমে একটি অনাকাঙ্ক্ষিত স্পেস রয়েছে, যেমনটি নিচে দেখানো হয়েছে:
      "demo-target.apigee.net "
                        
    • AssignMessage অথবা জাভাস্ক্রিপ্ট পলিসি ব্যবহার করে এপিআই প্রক্সিতে target.url ভেরিয়েবল দ্বারা ওভাররাইট করা হোস্টনেমটি ভুল, অথবা এতে কোনো স্পেস বা অন্য কোনো অবাঞ্ছিত বিশেষ অক্ষর রয়েছে।
  7. টার্গেট এন্ডপয়েন্ট কনফিগারেশন এবং/অথবা টার্গেট সার্ভার ডেফিনিশন পরীক্ষা করে দেখুন যে টার্গেট সার্ভার হোস্টনেমটি ভুল কিনা অথবা এতে কোনো অনাকাঙ্ক্ষিত স্পেস বা বিশেষ অক্ষর আছে কিনা।
  8. যদি টার্গেট সার্ভার হোস্টটি ডাইনামিকভাবে তৈরি করা হয়ে থাকে, তাহলে এটি তৈরি করতে ব্যবহৃত উপযুক্ত পলিসি (উদাহরণস্বরূপ , AssignMessage/JavaScript পলিসি) পরীক্ষা করুন। টার্গেট সার্ভার হোস্টের নামটি ভুল কিনা অথবা এতে কোনো অনাকাঙ্ক্ষিত স্পেস বা বিশেষ অক্ষর আছে কিনা তা যাচাই করে দেখুন।
  9. একবার আপনি টার্গেট সার্ভারের হোস্ট নেম নির্ধারণ করে ফেললে, হোস্ট নেমটি রিজলভ করা যায় কিনা তা দেখতে সেটির উপর nslookup/dig কমান্ডটি চালান।

    উদাহরণস্বরূপ, হোস্ট নেমে একটি অনাকাঙ্ক্ষিত স্পেস থাকলে nslookup কমান্ডটি চালালে নিম্নলিখিত আউটপুটটি পাওয়া যায়:

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
  10. যদি অপারেটিং সিস্টেমের nslookup কমান্ডটিও হোস্ট নেমটি রিজলভ করতে ব্যর্থ হয়, তাহলে এই সমস্যার কারণ হলো টার্গেট সার্ভারের জন্য ভুল হোস্ট নেম ব্যবহার করা।

    সমাধানে যান।

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

মেসেজ প্রসেসর লগ ব্যবহার করে রোগ নির্ণয় করতে:

  1. ব্যর্থ হওয়া অনুরোধটির মেসেজ আইডি নির্ধারণ করুন
  2. মেসেজ প্রসেসর লগ-এ ( /opt/apigee/var/log/edge-message-processor/logs/system.log ) মেসেজ আইডিটি খুঁজুন।
  3. যদি আপনি নিম্নলিখিত সতর্কীকরণ/ত্রুটির বার্তাগুলি দেখতে পান, তার মানে হলো মেসেজ প্রসেসর হোস্ট নেমটি রিজলভ করতে পারেনি। যেহেতু মেসেজটি স্নুজ করা হবে, তাই আপনি সব মেসেজ আইডি/রিকোয়েস্টের জন্য এই সতর্কীকরণ বার্তাটি নাও দেখতে পারেন।
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
        
  4. এর পরে একটি সতর্কীকরণ বার্তা প্রদর্শিত হবে, যেখানে মেসেজ প্রসেসর ডিএনএস ক্যাশে থেকে ঠিকানাটি মুছে ফেলবে, কারণ লক্ষ্য সার্ভার হোস্টে পৌঁছানো সম্ভব হয়নি।
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN  c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
        
  5. তখন আপনি এমন একটি বার্তা দেখতে পারেন যেখানে মেসেজ প্রসেসরটি “হোস্ট পৌঁছানো যাচ্ছে না” (Host not reachable) এই এক্সেপশনটির কারণে ব্যর্থ হয়। কখনও কখনও এটি এরর মেসেজের অংশ হিসেবে হোস্টের নামটিও দেখায়:
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  6. কখনও কখনও এটি নাল (null) দেখাতে পারে, কারণ হোস্ট নামটি সমাধান করা যায় না বা পৌঁছানো সম্ভব হয় না, যেমনটি নিচে দেখানো হয়েছে:
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  7. " Host not reachable " ত্রুটিটি সাধারণত নিম্নলিখিত ক্ষেত্রগুলির মধ্যে একটিতে ঘটে থাকে:
    • টার্গেট সার্ভার/টার্গেট এন্ডপয়েন্ট কনফিগারেশনে নির্দিষ্ট করা হোস্ট নামটি ভুল অথবা এতে অনাকাঙ্ক্ষিত স্পেস বা বিশেষ অক্ষর রয়েছে।

      উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটির বার্তায় "demo-target.apigee.net" হোস্ট নামে একটি অনাকাঙ্ক্ষিত স্পেস রয়েছে:
      NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception
              
    • AssignMessage অথবা জাভাস্ক্রিপ্ট পলিসি ব্যবহার করে এপিআই প্রক্সিতে target.url ভেরিয়েবল দ্বারা ওভাররাইট করা হোস্টনেমটি ভুল, অথবা এতে কোনো স্পেস বা অন্য কোনো অবাঞ্ছিত বিশেষ অক্ষর রয়েছে।
  8. নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করে মেসেজ প্রসেসর যে টার্গেট সার্ভার হোস্টনেমের সাথে যোগাযোগ করার চেষ্টা করছে তা নির্ধারণ করুন:
    1. Host not reachable লেখা ত্রুটি বার্তাটি মনোযোগ সহকারে পরীক্ষা করুন।
    2. যদি ত্রুটির বার্তায় হোস্টের নাম দেখানো হয়, তাহলে যেকোনো স্পেস বা বিশেষ অক্ষর সহ হোস্টের নামটি কপি করুন।
    3. যদি নিম্নলিখিত ত্রুটি বার্তার মতো হোস্ট নামের জন্য null দেখানো হয়,
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      1. ব্যর্থ হওয়া এপিআই প্রক্সিতে ব্যবহৃত টার্গেট সার্ভার ডেফিনিশন যাচাই করে হোস্ট নেম নির্ধারণ করুন।
      2. যদি টার্গেট সার্ভার হোস্টটি ডায়নামিকভাবে তৈরি করা হয়, তাহলে এটি তৈরি করতে ব্যবহৃত উপযুক্ত পলিসি (উদাহরণস্বরূপ, AssignMessage/JavaScript পলিসি ) পরীক্ষা করুন।
  9. একবার আপনি টার্গেট সার্ভারের হোস্ট নেম নির্ধারণ করে ফেললে, সেই হোস্ট নেমের উপর nslookup/dig কমান্ডটি চালান এবং দেখুন সেটি রিজলভ করা যায় কিনা।

    উদাহরণস্বরূপ, যে হোস্ট নামে একটি স্পেস আছে, সেটির উপর nslookup কমান্ডটি চালান।

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
          
  10. যদি অপারেটিং সিস্টেমের nslookup কমান্ডটিও হোস্ট নেমটি রিজলভ করতে ব্যর্থ হয়, তাহলে এই সমস্যার কারণ হলো টার্গেট সার্ভারের জন্য ভুল হোস্ট নেম ব্যবহার করা।

সমাধান

  1. নিশ্চিত করুন যে টার্গেট এন্ডপয়েন্ট কনফিগারেশনে বা টার্গেট সার্ভার ডেফিনিশনে উল্লেখিত টার্গেট সার্ভার হোস্টনেমটি সঠিক এবং এতে কোনো অনাকাঙ্ক্ষিত স্পেস বা বিশেষ অক্ষর নেই।
  2. যদি আপনি টার্গেট সার্ভার হোস্টনেম ডাইনামিকভাবে তৈরি করার জন্য কোনো AssignMessage/JavaScript পলিসি ব্যবহার করেন, তাহলে পলিসির সংজ্ঞা এবং কোডটি খতিয়ে দেখুন এবং নিশ্চিত করুন যে টার্গেট সার্ভার হোস্টনেমটি সঠিকভাবে তৈরি হচ্ছে।

SSL হ্যান্ডশেক ব্যর্থতা

TLS/SSL হ্যান্ডশেক ত্রুটি সমাধানের জন্য একটি সম্পূর্ণ ট্রাবলশুটিং প্লেবুক রয়েছে। SSL হ্যান্ডশেক ব্যর্থতা দেখুন।

সমস্যার উৎস নির্ধারণ করা

নির্দিষ্ট কিছু ত্রুটি ইনকামিং (নর্থবাউন্ড) অথবা আউটগোয়িং (সাউথবাউন্ড) সংযোগে ঘটতে পারে। একটি ইনকামিং (নর্থবাউন্ড) ত্রুটি ক্লায়েন্ট অ্যাপ্লিকেশন এবং Edge-এর মধ্যে ঘটে। একটি আউটগোয়িং (সাউথবাউন্ড) ত্রুটি Edge এবং ব্যাকএন্ড টার্গেট সার্ভারের মধ্যে ঘটে। এই ধরনের সমস্যা নির্ণয় করার জন্য, আপনার প্রথম কাজ হলো ত্রুটিটি নর্থবাউন্ড নাকি সাউথবাউন্ড সংযোগে ঘটছে তা বের করা।

উত্তরমুখী এবং দক্ষিণমুখী সংযোগগুলি বোঝা

Edge ব্রাউজারে, ইনকামিং বা আউটগোয়িং উভয় কানেকশনেই আপনি 503 Service Unavailable এরর-এর সম্মুখীন হতে পারেন:

  • ইনকামিং (বা নর্থবাউন্ড) কানেকশন - ক্লায়েন্ট অ্যাপ্লিকেশন এবং এজ রাউটারের মধ্যকার সংযোগ। রাউটার হলো Apigee Edge-এর সেই অংশ যা সিস্টেমে আসা ইনকামিং রিকোয়েস্টগুলো পরিচালনা করে।
  • বহির্গামী (বা দক্ষিণমুখী) সংযোগ - এজ মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যকার সংযোগ। মেসেজ প্রসেসর হলো Apigee Edge-এর একটি উপাদান যা API অনুরোধগুলোকে ব্যাকএন্ড টার্গেট সার্ভারগুলোতে প্রক্সি করে।

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

নিম্নোক্ত চিত্রে Apigee Edge-এর উত্তরমুখী ও দক্ষিণমুখী সংযোগগুলো দেখানো হয়েছে।

Flow of client application (northbound connection) through Edge to backend server (southbound connection)

503 সার্ভিস আনঅ্যাভেইলেবল ত্রুটিটি কোথায় ঘটেছে তা নির্ধারণ করা

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

UI ট্রেস

UI ট্রেস ব্যবহার করে ত্রুটিটি কোথায় ঘটেছে তা নির্ধারণ করতে:

  1. যদি সমস্যাটি এখনও বিদ্যমান থাকে, তাহলে প্রভাবিত API-টির জন্য UI ট্রেস সক্রিয় করুন।
  2. যদি ব্যর্থ হওয়া এপিআই অনুরোধের ইউআই ট্রেসে দেখা যায় যে, টার্গেট রিকোয়েস্ট ফ্লো চলাকালীন 503 সার্ভিস আনঅ্যাভেইলেবল ত্রুটিটি ঘটছে অথবা এটি ব্যাকএন্ড সার্ভার থেকে পাঠানো হচ্ছে, তাহলে সমস্যাটি সাউথবাউন্ড (অর্থাৎ, মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যেকার)।
  3. যদি আপনি নির্দিষ্ট এপিআই কলটির ট্রেস না পান, তাহলে সমস্যাটি নর্থবাউন্ড , অর্থাৎ ক্লায়েন্ট অ্যাপ্লিকেশন এবং রাউটারের মধ্যবর্তী।

এপিআই পর্যবেক্ষণ

এপিআই মনিটরিং আপনাকে ত্রুটি, পারফরম্যান্স, এবং লেটেন্সি সমস্যা ও সেগুলোর উৎস—যেমন ডেভেলপার অ্যাপ, এপিআই প্রক্সি, ব্যাকএন্ড টার্গেট বা এপিআই প্ল্যাটফর্ম—দ্রুত শনাক্ত করে সমস্যাযুক্ত এলাকাগুলো চিহ্নিত করতে সক্ষম করে।

এপিআই মনিটরিং ব্যবহার করে আপনার এপিআই-এর 5xx সমস্যাগুলো কীভাবে সমাধান করবেন, তা দেখানোর জন্য একটি নমুনা পরিস্থিতি ধাপে ধাপে অনুসরণ করুন । উদাহরণস্বরূপ, আপনি হয়তো একটি অ্যালার্ট সেট আপ করতে চাইতে পারেন, যাতে messaging.adaptors.http.flow.ServiceUnavailable ফল্টের সংখ্যা একটি নির্দিষ্ট সীমা অতিক্রম করলে আপনাকে জানানো হয়।

NGINX অ্যাক্সেস লগ

UI ট্রেস ব্যবহার করে ত্রুটিটি কোথায় ঘটেছে তা নির্ধারণ করতে:

যদি সমস্যাটি অতীতে ঘটে থাকে অথবা যদি সমস্যাটি মাঝে মাঝে হয় এবং আপনি এর গতিপথ রেকর্ড করতে না পারেন, তাহলে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

  1. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন ( /opt/apigee/var/log/edge-router/nginx/ org - env . port _access_log )।
  2. নির্দিষ্ট এপিআই প্রক্সির জন্য কোনো ৫০৩ এরর আছে কিনা তা অনুসন্ধান করুন।
  3. যদি আপনি নির্দিষ্ট সময়ে নির্দিষ্ট API-এর জন্য কোনো 503 ত্রুটি শনাক্ত করতে পারেন, তাহলে সমস্যাটি সাউথবাউন্ড সংযোগে (মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যে) ঘটেছে।
  4. তা না হলে, সমস্যাটি উত্তরমুখী সংযোগে (ক্লায়েন্ট অ্যাপ্লিকেশন এবং রাউটারের মধ্যে) ঘটেছে।