ডায়াগনস্টিক টুল এবং লগ

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

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

TCP/IP প্যাকেট স্নিফার (tcpdump) ইউটিলিটি

tcpdump টুলটি একটি কমান্ড-লাইন প্যাকেট স্নিফার টুল যা আপনাকে নেটওয়ার্কের মাধ্যমে প্রাপ্ত বা স্থানান্তরিত TCP/IP প্যাকেট ক্যাপচার বা ফিল্টার করতে সাহায্য করে। এটি Linux/Unix ভিত্তিক অপারেটিং সিস্টেমে পাওয়া যায়। আপনি yum ব্যবহার করে নিম্নলিখিতভাবে এই ইউটিলিটিটি ইনস্টল করতে পারেন:

yum install tcpdump

tcpdump টুলটি নেটওয়ার্ক বা SSL সম্পর্কিত সমস্যা সমাধানে সহায়ক। উদাহরণস্বরূপ:

  • ৫০২ ব্যাড গেটওয়ে ত্রুটি (EOF এক্সেপশনের কারণে সৃষ্ট)
  • ৫০৩ পরিষেবা অনুপলব্ধ ত্রুটি
  • SSL হ্যান্ডশেক ব্যর্থতা

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

  • ক্লায়েন্ট অ্যাপ এবং রাউটার
  • রাউটার এবং মেসেজ প্রসেসর
  • মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভার

একবার সমস্যা সৃষ্টিকারী কম্পোনেন্ট দুটি শনাক্ত করতে পারলে, আপনি এই কম্পোনেন্টগুলোর একটি বা উভয়টিতেই tcpdump ব্যবহার করে নেটওয়ার্ক প্যাকেট ক্যাপচার করতে পারবেন।

tcpdump ব্যবহার করে একটি নির্দিষ্ট হোস্টে পাঠানো/সেখান থেকে প্রাপ্ত প্যাকেট ক্যাপচার করা

একটি নির্দিষ্ট হোস্ট (আইপি অ্যাড্রেস)-এ পাঠানো বা সেখান থেকে গ্রহণ করা সমস্ত প্যাকেট ক্যাপচার করতে এবং তথ্যগুলো নির্দিষ্ট ফাইলে সংরক্ষণ করতে নিম্নলিখিত tcpdump কমান্ডটি ব্যবহার করুন:

tcpdump -i any -s 0 host <IP address> -w <File name>

কোথায়:

প্যারামিটার বর্ণনা
-i (ইন্টারফেস) সেই ইন্টারফেসটি নির্দিষ্ট করে যেখান থেকে প্যাকেটগুলো ক্যাপচার করা হবে। “any” মানটি ব্যবহার করলে সমস্ত ইন্টারফেস থেকে প্যাকেট ক্যাপচার করা যায়।
-s (snarf/snaplen) প্রতিটি প্যাকেটের কী পরিমাণ অংশ ক্যাপচার করা হবে তা নির্দিষ্ট করে। ০ (শূন্য) মানটি ব্যবহার করে আপনি সম্পূর্ণ প্যাকেটটি ক্যাপচার করতে পারবেন।
আইপি ঠিকানা যে হোস্টের প্যাকেটগুলো আমরা ক্যাপচার করতে চাই, তার আইপি অ্যাড্রেস হলো এটি।
ফাইলের নাম এটি সেই ফাইলের নাম যেখানে tcpdump লিখতে হবে।

উদাহরণ

ধরা যাক, আপনি মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যেকার প্যাকেটগুলো ক্যাপচার করতে চান:

  1. মেসেজ প্রসেসর মেশিনে লগ ইন করুন।
  2. ব্যাকএন্ড সার্ভারের আইপি অ্যাড্রেসটি নির্ধারণ করুন (ধরে নিন এটি 22.22.22.22), যেখান থেকে আমরা প্যাকেট ক্যাপচার করতে চাই।

একটি নির্দিষ্ট আইপি অ্যাড্রেসযুক্ত হোস্টের নেটওয়ার্ক প্যাকেট ক্যাপচার করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap

যদি ব্যাকএন্ড সার্ভারটি একাধিক আইপি অ্যাড্রেসে রিজলভ হয়, তাহলে নিচে দেখানো অনুযায়ী tcpdump কমান্ডে ব্যাকএন্ড সার্ভারের হোস্টনেম ব্যবহার করুন:

tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap

যদি ভিন্ন ভিন্ন আইপি অ্যাড্রেস (22.22.22.22, 33.33.33.33 এবং 44.44.44.44) সহ একাধিক ব্যাকএন্ড সার্ভার থাকে, তাহলে নিচের tcpdump কমান্ডটি ব্যবহার করুন:

tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap

টিসিপিডাম্প বিশ্লেষণ করা

আপনি tcpdump কমান্ড অথবা Wireshark নামক GUI ভিত্তিক টুল ব্যবহার করে tcpdump-গুলো দেখতে বা বিশ্লেষণ করতে পারেন।

তথ্যসূত্র

হিপ ডাম্প

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

যখন মেসেজ প্রসেসরের মতো কোনো জাভা প্রসেস নিম্নলিখিত বিষয়গুলো দেখায়, তখন হিপ ডাম্প খুবই দরকারি হয়:

  • উচ্চ মেমরি ব্যবহার
  • মেমরি শেষ হয়ে যাওয়ার ত্রুটি

একটি জাভা প্রসেসের জন্য হিপ ডাম্প তৈরি করা

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

একটি জাভা প্রসেসের হিপ ডাম্প তৈরি করতে নিম্নলিখিত jmap কমান্ডটি ব্যবহার করুন:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>

কোথায়:

প্যারামিটার বর্ণনা
জাভা_হোম জাভার ইনস্টলেশন ডিরেক্টরি কি?
ফাইলের নাম ফাইলের নাম যেখানে হিপ ডাম্প লেখা হবে
পিআইডি যে জাভা অ্যাপ্লিকেশনটির হেড ডাম্প ক্যাপচার করতে হবে, তার প্রসেস আইডি কি?

উদাহরণ

ধরা যাক, mp-east মেসেজ প্রসেসরটি অনেক বেশি মেমরি ব্যবহার করছে অথবা OutOfMemory Error দেখাচ্ছে। Unix অপারেটিং সিস্টেমে ps কমান্ড ব্যবহার করে মেসেজ প্রসেসরটির প্রসেস আইডি বের করুন। ধরা যাক, এটি হলো 24569।

হিপ ডাম্প তৈরি করতে jmap ইউটিলিটিটি নিম্নরূপে চালান:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569

হিপ ডাম্প বিশ্লেষণ

সম্ভাব্য মেমোরি লিক শনাক্ত করতে অথবা কোন জাভা অবজেক্টগুলো উচ্চ মেমোরি ব্যবহারের কারণ হচ্ছে তা নির্ধারণ করতে Eclipse MAT (মেমোরি অ্যানালাইজার টুল) ব্যবহার করে হিপ ডাম্প বিশ্লেষণ করা যায়।

তথ্যসূত্র

কীভাবে একটি স্তূপ সংগ্রহ করবেন

jmap ইউটিলিটি

jmap ম্যান পেজ

মেমরি অ্যানালাইজার টুল (MAT)


থ্রেড ডাম্প

থ্রেড ডাম্প হলো একটি চলমান জাভা প্রসেসের সমস্ত থ্রেডের অবস্থার একটি স্ন্যাপশট। প্রতিটি থ্রেডের অবস্থা তার স্ট্যাকের বিষয়বস্তুসহ উপস্থাপন করা হয়, যা স্ট্যাক ট্রেস নামে পরিচিত। কিছু থ্রেড চলমান জাভা অ্যাপ্লিকেশনের অংশ হবে, আর বাকিগুলো হবে JVM-এর অভ্যন্তরীণ থ্রেড।

একটি থ্রেড ডাম্প অ্যাপ্লিকেশনটির প্রতিটি থ্রেডের কার্যকলাপ সম্পর্কে তথ্য প্রকাশ করে। এই তথ্য নিম্নলিখিত ক্ষেত্রে খুব উপযোগী হতে পারে:

  • সিপিইউ স্পাইক, ধীর প্রতিক্রিয়া সময়, বা সাড়া না দেওয়া জাভা অ্যাপ্লিকেশনের মতো সমস্যা নির্ণয় করুন।
  • অ্যাপ্লিকেশন এবং JVM পারফরম্যান্স অপ্টিমাইজ করুন

থ্রেড ডাম্প তৈরি করা

নিচে দেখানো পদ্ধতি অনুযায়ী jstack ইউটিলিটি ব্যবহার করে একটি জাভা প্রসেসের থ্রেড ডাম্প তৈরি করা যায়:

sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>

কোথায়:

প্যারামিটার বর্ণনা
জাভা_হোম এটি জাভার ইনস্টলেশন ডিরেক্টরি।
পিআইডি এটি সেই জাভা অ্যাপ্লিকেশনটির প্রসেস আইডি, যার থ্রেড ডাম্প আপনি ক্যাপচার করতে চান।
ফাইলের নাম এটি সেই ফাইলের নাম যেখানে থ্রেড ডাম্পটি লেখা হবে।

উদাহরণ

মেসেজ প্রসেসর mp-east- এ প্রসেস আইডি 37320-এর জন্য একটি থ্রেড ডাম্প তৈরি করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt

উপরের উদাহরণ অনুযায়ী, প্রসেসটির থ্রেড ডাম্প /opt/apigee/edge-message-processor/mp-east-threadDump.txt ফাইলে সংরক্ষিত হবে।

থ্রেড ডাম্প বিশ্লেষণ

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

তথ্যসূত্র