ডায়াগনস্টিক টুল ও লগ

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

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

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

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

yum install tcpdump

tcpdump টুলটি নেটওয়ার্ক বা SSL সম্পর্কিত সমস্যার সমাধান করার জন্য উপযোগী। যেমন:

  • 502 ভুল গেটওয়ে সমস্যা (EOF ব্যতিক্রমের কারণে হয়)
  • 503 পরিষেবা উপলভ্য নেই সংক্রান্ত সমস্যা
  • SSL হ্যান্ডশেক সংক্রান্ত সমস্যা

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

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

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

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

নির্দিষ্ট হোস্ট (IP অ্যাড্রেস) থেকে পাঠানো বা পাওয়া সব প্যাকেট ক্যাপচার করতে এবং নির্দিষ্ট ফাইলে তথ্য সেভ করতে, নিম্নলিখিত tcpdump কমান্ড ব্যবহার করুন:

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

যেখানে:

প্যারামিটার বিবরণ
-i (interface) সেই ইন্টারফেস নির্দিষ্ট করে যেখান থেকে প্যাকেট ক্যাপচার করতে হবে। <0x0A>ব্যবহার করে “যেকোনও” ভ্যালু সব ইন্টারফেস থেকে প্যাকেট ক্যাপচার করার অনুমতি দেয়।
-s (snarf/snaplen) ক্যাপচার করার জন্য প্রতিটি প্যাকেটের পরিমাণ নির্দিষ্ট করে। 0 (শূন্য) ভ্যালু ব্যবহার করলে আপনি সম্পূর্ণ প্যাকেট ক্যাপচার করতে পারবেন।
IP অ্যাড্রেস হল সেই হোস্টের IP অ্যাড্রেস যার জন্য আমরা প্যাকেট ক্যাপচার করতে চাই
ফাইলের নাম হল সেই ফাইলের নাম যেখানে tcpdump লিখতে হবে

উদাহরণ

ধরা যাক, আপনি মেসেজ প্রসেসর ও ব্যাকএন্ড সার্ভারের মধ্যে প্যাকেট ক্যাপচার করতে চান:

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

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

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

ব্যাকএন্ড সার্ভার একাধিক IP অ্যাড্রেস সমাধান করলে, tcpdump কমান্ডে ব্যাকএন্ড সার্ভারের হোস্টনেম ব্যবহার করুন, যেমন নিচে দেখানো হয়েছে:

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

আলাদা আলাদা IP অ্যাড্রেস (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

tcpdumps বিশ্লেষণ করা

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

রেফারেন্স

হিপ ডাম্প

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

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

  • মেমরির বেশি ব্যবহার
  • OutofMemoryError

Java প্রসেসের জন্য হিপ ডাম্প জেনারেট করা

Java jmap নামে একটি ইউটিলিটি প্রদান করে, যা আপনাকে রানিং Java প্রসেসের মেমরি স্ট্যাটিসটিক্স বা হিপ ডাম্প তৈরি করতে দেয়।

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

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

যেখানে:

প্যারামিটার বিবরণ
JAVA_HOME Java-এর ইনস্টলেশন ডিরেক্টরি
ফাইলের নাম হিপ ডাম্প যে ফাইলে লেখা হবে তার নাম
pid এটি কি সেই জাভা অ্যাপ্লিকেশনের প্রসেস আইডি যার হেড ডাম্প ক্যাপচার করতে হবে

উদাহরণ

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

হিপ ডাম্প তৈরি করতে, নিম্নলিখিত পদ্ধতিতে jmap ইউটিলিটি রান করুন:

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

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

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

রেফারেন্স

কীভাবে হিপ ডাম্প সংগ্রহ করতে হয়

jmap ইউটিলিটি

jmap ম্যান পেজ

Memory Analyzer Tool (MAT)


থ্রেড ডাম্প

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

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

  • CPU স্পাইক, ধীরে ধীরে উত্তর দেওয়া বা Java অ্যাপ্লিকেশনের উত্তর না দেওয়ার মতো সমস্যা ডায়াগনসিস করা
  • অ্যাপ্লিকেশন ও JVM পারফর্ম্যান্স অপ্টিমাইজ করা

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

নিচে দেখানো jstack ইউটিলিটি ব্যবহার করে Java প্রসেসের জন্য থ্রেড ডাম্প তৈরি করা যেতে পারে:

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

যেখানে:

প্যারামিটার বিবরণ
JAVA_HOME এটি হল Java-র ইনস্টলেশন ডিরেক্টরি।
pid এটি হল Java অ্যাপ্লিকেশনের প্রসেস আইডি, যেটির থ্রেড ডাম্প আপনি ক্যাপচার করতে চান।
ফাইলের নাম এটি হল ফাইলের নাম যেখানে থ্রেড ডাম্প লেখা হবে।

উদাহরণ

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

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 (Linux), notepad (Windows)-এর মতো যেকোনও টেক্সট এডিটরে থ্রেড ডাম্প দেখতে পারবেন। থ্রেড ডাম্পের বিভিন্ন বিভাগ এবং কীভাবে তথ্য ব্যাখ্যা করতে হয় সেই সম্পর্কে বিস্তারিত জানতে থ্রেড ডাম্প দেখুন।

রেফারেন্স