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

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

ভিডিও

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

ভিডিও বর্ণনা
DNS সমস্যার কারণে 503 পরিষেবা অনুপলব্ধ ত্রুটির সমস্যা সমাধান এবং সমাধান করুন নিম্নলিখিত সম্পর্কে জানুন:
  • Apigee Edge-এ DNS রেজোলিউশন এবং নেটওয়ার্ক-সম্পর্কিত সমস্যার কারণে 503 পরিষেবা অনুপলব্ধ ত্রুটি
  • ডিএনএস রেজোলিউশন সমস্যার কারণে একটি রিয়েল-টাইম 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"
       }
    }
}
      

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

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

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

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

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

ব্যর্থ অনুরোধের বার্তা আইডি নির্ধারণ করুন

ট্রেস টুল

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

  1. সমস্যাটি এখনও সক্রিয় থাকলে, প্রভাবিত API-এর জন্য ট্রেস সেশন সক্রিয় করুন।
  2. API কল করুন এবং সমস্যাটি পুনরুত্পাদন করুন - ত্রুটি কোড messaging.adaptors.http.flow.ServiceUnavailable.
  3. একটি ব্যর্থ অনুরোধ নির্বাচন করুন.
  4. AX পর্বে নেভিগেট করুন, এবং নিম্নলিখিত চিত্রে দেখানো হিসাবে ফেজ বিশদ বিভাগে নীচে স্ক্রোল করে অনুরোধের বার্তা আইডি ( 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. একটি নির্দিষ্ট সময়কালের (যদি সমস্যা অতীতে ঘটে থাকে) নির্দিষ্ট API প্রক্সির জন্য কোনো 503 ত্রুটি আছে কিনা বা 503 এর সাথে এখনও কোনো অনুরোধ ব্যর্থ হলে অনুসন্ধান করুন।
  3. যদি X-Apigee-fault-code messaging.adaptors.http.flow.ServiceUnavailable এর সাথে কোনো 503 ত্রুটি থাকে, তাহলে নিম্নলিখিত উদাহরণে দেখানো এক বা একাধিক অনুরোধের জন্য বার্তা আইডিটি নোট করুন:

    নমুনা এন্ট্রি 503 ত্রুটি দেখাচ্ছে

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

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

রোগ নির্ণয়

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

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

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

রেজোলিউশন

অনুগ্রহ করে আপনার অপারেটিং সিস্টেম প্রশাসকের সাথে কাজ করুন এবং DNS সার্ভারের সমস্যাগুলি সমাধান করুন৷

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

সংযোগ ত্রুটি

একটি সংযোগ ত্রুটি ঘটে যখন একটি Apigee Edge মেসেজ প্রসেসর একটি ব্যাকএন্ড সার্ভারের সাথে সংযোগ করার চেষ্টা করে এবং এই সমস্যাগুলির মধ্যে একটি ঘটে:

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

রোগ নির্ণয়

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

রেজোলিউশন

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

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

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

রোগ নির্ণয়

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

ট্রেস টুল

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

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

    নমুনা অনুরোধ ট্রেসে error.cause দেখাচ্ছে

    Sample request showing error.cause in the trace
  6. আপনি যদি লক্ষ্য করেন যে ত্রুটি
    • টার্গেট সার্ভার/টার্গেট এন্ডপয়েন্ট কনফিগারেশনে নির্দিষ্ট করা হোস্টের নামটি ভুল বা অবাঞ্ছিত স্থান বা বিশেষ অক্ষর রয়েছে।

      উদাহরণস্বরূপ, হোস্টের নামে একটি অবাঞ্ছিত স্থান রয়েছে যা নীচে দেখানো হয়েছে:
      "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. যদি ত্রুটি বার্তাটি হোস্ট নামের জন্য শূন্য দেখায় যেমনটি নিম্নলিখিত ত্রুটি বার্তাটিতে দেখা যায়,
      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 হ্যান্ডশেক ব্যর্থতা

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

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

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

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

এজ-এ, আপনি ইনকামিং বা আউটগোয়িং সংযোগে একটি 503 পরিষেবা অনুপলব্ধ ত্রুটির সম্মুখীন হতে পারেন:

  • ইনকামিং (বা উত্তরমুখী) সংযোগ - ক্লায়েন্ট অ্যাপ্লিকেশন এবং এজ রাউটারের মধ্যে সংযোগ। রাউটার হল 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. যদি ব্যর্থ API অনুরোধের জন্য UI ট্রেস দেখায় যে 503 পরিষেবা অনুপলব্ধ ত্রুটি লক্ষ্য অনুরোধ প্রবাহের সময় ঘটে বা ব্যাকএন্ড সার্ভার দ্বারা পাঠানো হয়, তাহলে সমস্যাটি দক্ষিণমুখী (অর্থাৎ, বার্তা প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যে)।
  3. আপনি যদি নির্দিষ্ট 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. যদি না হয়, তাহলে সমস্যাটি উত্তরমুখী সংযোগে ঘটেছে (ক্লায়েন্ট অ্যাপ্লিকেশন এবং রাউটারের মধ্যে)।