503 পরিষেবা উপলভ্য নেই

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

ভিডিও

503 সমস্যার ব্যাপারে আরও তথ্য পেতে, নিম্নলিখিত ভিডিও দেখুন:

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

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

API প্রক্সি কলের পরে ক্লায়েন্ট অ্যাপ্লিকেশন পরিষেবা উপলভ্য নেই মেসেজ সহ 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 পরিষেবা উপলভ্য নেই দেখা যায়।

503 পরিষেবা উপলভ্য নেই উত্তরের সম্ভাব্য কারণগুলি হল:

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

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

অনুরোধটি কেন সম্পূর্ণ করা যায়নি তা মেসেজ আইডি থেকে বোঝা

ট্রেস টুল

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

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

    ফেজ বিবরণ বিভাগে মেসেজ আইডি

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

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

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

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

    503 সমস্যার কোড সহ নমুনা এন্ট্রি

    স্ট্যাটাস কোড, মেসেজ আইডি, সমস্যার সোর্স ও সমস্যার কোড সহ এন্ট্রি

ভুল DNS রেজোলিউশনের কারণে কানেকশন সংক্রান্ত সমস্যা

ডায়াগনসিস

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

    onConnectTimeout সমস্যাটি ইঙ্গিত করে যে Message Processor আগে থেকে সেট করা কানেকশন টাইম-আউট পিরিয়ডের (ডিফল্ট: ৩ সেকেন্ড) মধ্যে ব্যাকএন্ড সার্ভারের সাথে কানেক্ট করতে পারেনি।
    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 ত্রুটিতে সমাধান করা IP অ্যাড্রেসটি নোট করুন এবং IP অ্যাড্রেসটি আপনার ব্যাকএন্ড সার্ভারের জন্য বৈধ কিনা তা চেক করুন। IP অ্যাড্রেস সঠিক হলে, কানেকশন সংক্রান্ত সমস্যা লিঙ্কে যান।
  4. IP অ্যাড্রেসটি ভুল হলে, DNS রেজোলিউশন সংক্রান্ত সমস্যার কারণে এটি হতে পারে।
  5. আরও কয়েকটি এপিআই অনুরোধ ব্যর্থ হলে ৩ ও ৪ নম্বর ধাপ আবার অনুসরণ করুন এবং আপনি একই বা অন্য কোনও অবৈধ IP অ্যাড্রেস দেখতে পাচ্ছেন কিনা তা যাচাই করুন।
  6. Message Processor লগ (/opt/apigee/var/log/edge-message-processor/logs/system.log)-এ DNS Refresh কীওয়ার্ড সহ মেসেজ সার্চ করুন। মাঝে মাঝে মেসেজ প্রসেসরের DNS ক্যাশে ভুল বা অবৈধ IP অ্যাড্রেস যোগ করা হচ্ছে কিনা তা চেক করুন।
    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-এ কনফিগার করা নেম সার্ভারে কোনও সমস্যা থাকলে এই সমস্যা হতে পারে।

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

রেজোলিউশন

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

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

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

Apigee Edge মেসেজ প্রসেসর কোনও ব্যাকএন্ড সার্ভারের সাথে কানেক্ট করার চেষ্টা করলে এবং এইসব সমস্যার মধ্যে কোনও একটি হলে কানেকশন সংক্রান্ত সমস্যা হয়:

  • প্রিসেট করা কানেকশন টাইম-আউট পিরিয়ডের মধ্যে মেসেজ প্রসেসর কানেক্ট করতে পারছে না। (ডিফল্ট: ৩ সেকেন্ড)
  • ব্যাকএন্ড সার্ভার কানেকশন প্রত্যাখ্যান করে।

ডায়াগনসিস

  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: কানেকশন প্রত্যাখ্যান করা হয়েছে সমস্যাটি থেকে বোঝা যায় যে ব্যাকএন্ড সার্ভার কানেকশন প্রত্যাখ্যান করেছে।
      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. ব্যাকএন্ড সার্ভার যদি একটি IP অ্যাড্রেসে সমাধান করে, তাহলে নিম্নলিখিত কমান্ড ব্যবহার করুন:
      telnet BackendServer-IPaddress 443
                
    2. ব্যাকএন্ড সার্ভার একাধিক IP অ্যাড্রেস সমাধান করলে, telnet কমান্ডে ব্যাকএন্ড সার্ভারের হোস্টনেম ব্যবহার করুন, যেমন নিচে দেখানো হয়েছে:
      telnet BackendServer-HostName 443
                
  4. আপনি ব্যাকএন্ড সার্ভারের সাথে কানেক্ট করতে পারলে, Connected to backend-server-এর মতো মেসেজ দেখতে পেতে পারেন। আপনি ব্যাকএন্ড সার্ভারের সাথে কানেক্ট করতে না পারলে, এর কারণ হতে পারে যে নির্দিষ্ট ব্যাকএন্ড সার্ভারে মেসেজ প্রসেসরের IP অ্যাড্রেস অ্যালাও লিস্টে নেই।

রেজোলিউশন

Edge Message Processor থেকে আপনার ব্যাকএন্ড সার্ভার অ্যাক্সেস করার জন্য নির্দিষ্ট ব্যাকএন্ড সার্ভারে Message Processor-এর IP অ্যাড্রেস অ্যাক্সেস করার অনুমতি দিন। যেমন, Linux-এ, আপনি মেসেজ প্রসেসরের IP অ্যাড্রেস থেকে আসা ট্রাফিককে ব্যাকএন্ড সার্ভারে অনুমতি দেওয়ার জন্য iptables ব্যবহার করতে পারেন।

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

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

ডায়াগনসিস

টার্গেট সার্ভারে উল্লেখ করা হোস্টের নাম ভুল হলে, আপনি সমস্যার কোড messaging.adaptors.http.flow.ServiceUnavailable. সহ 503 পরিষেবা উপলভ্য নেই উত্তর পেতে পারেন

ট্রেস টুল

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

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

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

    ট্রেসে error.cause সহ অনুরোধের নমুনা
  6. আপনি যদি লক্ষ্য করেন যে error.cause-এ হোস্টে পৌঁছানো যাচ্ছে না দেখানো হচ্ছে, তাহলে সমস্যার সম্ভাব্য কারণ নিম্নলিখিতগুলির মধ্যে একটি:
    • টার্গেট সার্ভার/টার্গেট এন্ডপয়েন্ট কনফিগারেশনে উল্লেখ করা হোস্টের নাম ভুল অথবা তাতে অবাঞ্ছিত স্পেস বা বিশেষ অক্ষর আছে।

      যেমন, নিচে দেখানো হোস্ট নামে একটি অবাঞ্ছিত স্পেস আছে:
      "demo-target.apigee.net "
                        
    • AssignMessage বা JavaScript নীতি ব্যবহার করে API প্রক্সিতে 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. এর পরে একটি সতর্কতামূলক মেসেজ দেখানো হবে, যেখানে মেসেজ প্রসেসর DNS ক্যাশে থেকে অ্যাড্রেসটি সরিয়ে দেয়, কারণ টার্গেট সার্ভার হোস্টের সাথে যোগাযোগ করা যায়নি।
    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. তারপরে আপনি হয়ত একটি মেসেজ দেখতে পাবেন যেখানে মেসেজ প্রসেসর “হোস্ট অ্যাক্সেস করা যাচ্ছে না” ব্যতিক্রমের সাথে ব্যর্থ হয়েছে। কখনও কখনও এটি সমস্যার মেসেজের অংশ হিসেবে হোস্টের নাম দেখায়:
    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. কখনও কখনও এটি নাল হিসেবে দেখাতে পারে কারণ হোস্টনেম রিসলভ করা যায় না বা নিচে দেখানো হয়েছে সেই অনুযায়ী পৌঁছানো যায় না:
    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 বা JavaScript নীতি ব্যবহার করে API প্রক্সিতে 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. ফেল করা API প্রক্সিতে ব্যবহৃত টার্গেট সার্ভারের সংজ্ঞা চেক করে হোস্টনেম নির্ধারণ করুন।
      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-এ, ইনকামিং বা আউটগোয়িং কানেকশনে আপনি 503 পরিষেবা উপলভ্য নেই সমস্যার মেসেজ পেতে পারেন:

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

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

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

Edge থেকে ব্যাকএন্ড সার্ভার (সাউথবাউন্ড কানেকশন) পর্যন্ত ক্লায়েন্ট অ্যাপ্লিকেশনের ফ্লো (নর্থবাউন্ড কানেকশন)

503 পরিষেবা উপলভ্য নেই সমস্যাটি কোথায় হয়েছে তা নির্ধারণ করা

503 পরিষেবা উপলভ্য নয় সংক্রান্ত সমস্যাটি উত্তরমুখী বা দক্ষিণমুখী কানেকশনে হয়েছে কিনা তা নির্ধারণ করতে নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করুন।

UI ট্রেস

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

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

API মনিটরিং

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

API মনিটরিং ব্যবহার করে আপনার API-তে 5xx সমস্যা কীভাবে সমাধান করবেন তা ডেমোনস্ট্রেট করে এমন একটি নমুনা পরিস্থিতি দেখুন। যেমন, আপনি এমন একটি অ্যালার্ট সেট-আপ করতে পারেন যাতে messaging.adaptors.http.flow.ServiceUnavailable ত্রুটির সংখ্যা একটি নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করলে আপনাকে বিজ্ঞপ্তি পাঠানো হয়।

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

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

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

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