আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
এই বিষয়টি নেটওয়ার্ক টুলস, JVM টুলস, এবং ডায়াগনস্টিক লগ নিয়ে আলোচনা করে যা আপনি Apigee Edge-এ নেটওয়ার্ক এবং JVM-সম্পর্কিত সমস্যার সমাধান করতে ব্যবহার করতে পারেন।
TCP/IP প্যাকেট স্নিফার (tcpdump) ইউটিলিটি
tcpdump টুল হল একটি কমান্ড-লাইন প্যাকেট স্নিফার টুল যা আপনাকে নেটওয়ার্কের মাধ্যমে প্রাপ্ত বা স্থানান্তরিত TCP/IP প্যাকেট ক্যাপচার বা ফিল্টার করতে দেয়। এটি লিনাক্স/ইউনিক্স ভিত্তিক অপারেটিং সিস্টেমে উপলব্ধ। আপনি নিম্নরূপ yum ব্যবহার করে এই ইউটিলিটি ইনস্টল করতে পারেন:
yum install tcpdump
tcpdump টুলটি নেটওয়ার্ক বা SSL সংক্রান্ত সমস্যা সমাধানের জন্য উপযোগী। যেমন:
- 502 খারাপ গেটওয়ে ত্রুটি (EOF ব্যতিক্রমের কারণে সৃষ্ট)
- 503 পরিষেবা অনুপলব্ধ ত্রুটি
- SSL হ্যান্ডশেক ব্যর্থতা
এই সমস্যাগুলির যেকোন সমস্যা সমাধানের জন্য, আপনাকে প্রথমে উপাদানগুলির জোড়া নির্ধারণ করতে হবে যেগুলির মধ্যে ত্রুটি ঘটেছে৷ এজ এর ক্ষেত্রে, এটি নিম্নলিখিত জোড়াগুলির মধ্যে একটি হতে পারে:
- ক্লায়েন্ট অ্যাপ এবং রাউটার
- রাউটার এবং মেসেজ প্রসেসর
- বার্তা প্রসেসর এবং ব্যাকএন্ড সার্ভার
একবার আপনি সমস্যাযুক্ত উপাদানগুলির জোড়া সনাক্ত করার পরে, আপনি এই উপাদানগুলির একটি বা উভয়টিতে tcpdump ব্যবহার করে নেটওয়ার্ক প্যাকেটগুলি ক্যাপচার করতে পারেন।
tcpdump ব্যবহার করে একটি নির্দিষ্ট হোস্ট থেকে পাঠানো/প্রাপ্ত প্যাকেট ক্যাপচার করা
একটি নির্দিষ্ট হোস্ট (IP ঠিকানা) থেকে পাঠানো বা প্রাপ্ত সমস্ত প্যাকেট ক্যাপচার করতে এবং নির্দিষ্ট ফাইলে তথ্য সংরক্ষণ করতে নিম্নলিখিত tcpdump কমান্ডটি ব্যবহার করুন:
tcpdump -i any -s 0 host <IP address> -w <File name>
কোথায়:
প্যারামিটার | বর্ণনা |
-i | (ইন্টারফেস) ইন্টারফেসটি নির্দিষ্ট করে যেখান থেকে প্যাকেটগুলি ক্যাপচার করা উচিত। "যেকোন" এর মান ব্যবহার করে সমস্ত ইন্টারফেস থেকে প্যাকেট ক্যাপচার করার অনুমতি দেয়। |
-s | (snarf/snaplen) ক্যাপচার করার জন্য প্রতিটি প্যাকেটের পরিমাণ নির্দিষ্ট করে। 0 (শূন্য) এর মান ব্যবহার করে আপনি পুরো প্যাকেটটি ক্যাপচার করতে পারবেন। |
আইপি ঠিকানা | হোস্টের আইপি ঠিকানা যার জন্য আমরা প্যাকেটগুলি ক্যাপচার করতে চাই |
ফাইলের নাম | ফাইলের নাম যেখানে tcpdump লিখতে হবে |
উদাহরণ
ধরা যাক আপনি বার্তা প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যে প্যাকেটগুলি ক্যাপচার করতে চান:
- মেসেজ প্রসেসর মেশিনে লগ ইন করুন।
- ব্যাকএন্ড সার্ভারের আইপি ঠিকানা নির্ধারণ করুন (ধরুন এটি 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
tcpdumps বিশ্লেষণ করা হচ্ছে
আপনি tcpdump কমান্ড বা GUI ভিত্তিক টুল Wireshark ব্যবহার করে tcpdumps দেখতে বা বিশ্লেষণ করতে পারেন।
তথ্যসূত্র
স্তূপ
হিপ ডাম্প হল একটি জাভা প্রক্রিয়ার স্মৃতির একটি স্ন্যাপশট। হিপ ডাম্প সংগ্রহের মুহুর্তে তারা হিপে জাভা অবজেক্ট এবং ক্লাস সম্পর্কে তথ্য ধারণ করে। এগুলি সাধারণত 100MBs থেকে কয়েক GBs-এর মধ্যে যেকোন জায়গায় আকারে বেশ বড় হয়৷
হিপ ডাম্প খুব দরকারী যখন একটি জাভা প্রক্রিয়া যেমন মেসেজ প্রসেসর দেখায়:
- উচ্চ মেমরি ব্যবহার
- মেমরির বাইরে ত্রুটি
একটি জাভা প্রক্রিয়ার জন্য হিপ ডাম্প তৈরি করা হচ্ছে
জাভা jmap নামে একটি ইউটিলিটি প্রদান করে, যা আপনাকে একটি চলমান জাভা প্রক্রিয়ার মেমরি পরিসংখ্যান বা হিপ ডাম্প তৈরি করতে দেয়।
একটি জাভা প্রক্রিয়ার হিপ ডাম্প তৈরি করতে নিম্নলিখিত jmap কমান্ডটি ব্যবহার করুন:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
কোথায়:
প্যারামিটার | বর্ণনা |
JAVA_HOME | জাভার ইনস্টলেশন ডিরেক্টরি |
ফাইলের নাম | ফাইলের নাম যেখানে হিপ ডাম্প লেখা হবে |
পিড | জাভা অ্যাপ্লিকেশনের প্রসেস আইডি যার হেড ডাম্প ক্যাপচার করতে হবে |
উদাহরণ
ধরা যাক মেসেজ প্রসেসর mp-east এর উচ্চ মেমরি ব্যবহার আছে বা OutOfMemory এরর নিক্ষেপ করছে। ইউনিক্স অপারেটিং সিস্টেমে ps কমান্ড ব্যবহার করে মেসেজ প্রসেসরের প্রসেস আইডি নির্ধারণ করুন। ধরা যাক এটি 24569।
হিপ ডাম্প তৈরি করতে নিম্নরূপ jmap ইউটিলিটি চালান:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
হিপ ডাম্প বিশ্লেষণ করা হচ্ছে
Eclipse MAT (মেমরি অ্যানালাইজার টুল) ব্যবহার করে হিপ ডাম্প বিশ্লেষণ করা যেতে পারে সম্ভাব্য মেমরি লিক বা কোন জাভা অবজেক্টগুলি উচ্চ মেমরি ব্যবহারের দিকে পরিচালিত করছে তা নির্ধারণ করতে।
তথ্যসূত্র
থ্রেড ডাম্প
একটি থ্রেড ডাম্প হল একটি চলমান জাভা প্রক্রিয়ার সমস্ত থ্রেডের অবস্থার একটি স্ন্যাপশট। প্রতিটি থ্রেডের অবস্থা তার স্ট্যাকের বিষয়বস্তু সহ উপস্থাপন করা হয়, স্ট্যাক ট্রেস হিসাবে উল্লেখ করা হয়। কিছু থ্রেড চলমান জাভা অ্যাপ্লিকেশনের অংশ হবে, অন্যগুলি JVM অভ্যন্তরীণ থ্রেড হবে।
একটি থ্রেড ডাম্প অ্যাপ্লিকেশনের প্রতিটি থ্রেড কার্যকলাপ সম্পর্কে তথ্য প্রকাশ করে। এই তথ্য খুব দরকারী হতে পারে:
- সিপিইউ স্পাইক, ধীর প্রতিক্রিয়ার সময়, বা প্রতিক্রিয়াশীল জাভা অ্যাপ্লিকেশনগুলির মতো সমস্যাগুলি নির্ণয় করুন
- অ্যাপ্লিকেশন এবং JVM কর্মক্ষমতা অপ্টিমাইজ করুন
থ্রেড ডাম্প তৈরি করা হচ্ছে
একটি জাভা প্রক্রিয়ার জন্য থ্রেড ডাম্প নীচে দেখানো হিসাবে jstack ইউটিলিটি ব্যবহার করে তৈরি করা যেতে পারে:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
কোথায়:
প্যারামিটার | বর্ণনা |
JAVA_HOME | জাভার ইনস্টলেশন ডিরেক্টরি। |
পিড | জাভা অ্যাপ্লিকেশনটির প্রসেস আইডি যার থ্রেড ডাম্প আপনি ক্যাপচার করতে চান। |
ফাইলের নাম | ফাইলের নাম যেখানে থ্রেড ডাম্প লেখা হবে। |
উদাহরণ
মেসেজ প্রসেসর 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 (Linux), নোটপ্যাড (উইন্ডোজ) এর মতো যেকোনো টেক্সট এডিটরে থ্রেড ডাম্প দেখতে পারেন। থ্রেড ডাম্পের বিভিন্ন বিভাগ এবং কীভাবে তথ্য ব্যাখ্যা করতে হয় তার বিস্তারিত জানার জন্য থ্রেড ডাম্প দেখুন।