ابزارهای تشخیصی و سیاهههای مربوط

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

این موضوع درباره ابزارهای شبکه، ابزارهای JVM و گزارش‌های تشخیصی که می‌توانید برای عیب‌یابی مشکلات شبکه و JVM در Apigee Edge استفاده کنید، بحث می‌کند.

ابزار TCP/IP sniffer بسته (tcpdump).

ابزار tcpdump یک ابزار ردیابی بسته های خط فرمان است که به شما امکان می دهد بسته های TCP/IP را که از طریق شبکه دریافت یا منتقل می شوند، ضبط یا فیلتر کنید. در سیستم عامل های مبتنی بر لینوکس/یونیکس موجود است. می توانید این ابزار را با استفاده از yum به صورت زیر نصب کنید:

yum install tcpdump

ابزار tcpdump برای عیب یابی مشکلات مربوط به شبکه یا SSL مفید است. به عنوان مثال:

  • 502 خطای دروازه بد (ناشی از استثناء EOF)
  • خطاهای 503 سرویس در دسترس نیست
  • SSL Handshake Failures

برای عیب یابی هر یک از این مشکلات، ابتدا باید جفت مؤلفه هایی را که بین آنها خطا رخ داده است، تعیین کنید. در مورد Edge، می تواند یکی از جفت های زیر باشد:

  • برنامه مشتری و روتر
  • روتر و پردازشگر پیام
  • پردازشگر پیام و سرور Backend

هنگامی که جفت کامپوننت مشکل ساز را شناسایی کردید، می توانید بسته های شبکه را با استفاده از tcpdump روی یکی یا هر دوی این مؤلفه ها ضبط کنید.

گرفتن بسته های ارسال شده به/دریافت شده از یک میزبان خاص با استفاده از tcpdump

از دستور tcpdump زیر برای گرفتن تمام بسته های ارسال شده یا دریافت شده از یک میزبان مشخص (آدرس IP) استفاده کنید و اطلاعات را در فایل مشخص شده ذخیره کنید:

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

کجا:

پارامتر توضیحات
من (رابط) رابطی را که بسته ها باید از آن گرفته شوند را مشخص می کند. استفاده از مقدار "any" اجازه می دهد تا بسته ها را از همه رابط ها ضبط کنید.
-s (snarf/snaplen) مقدار هر بسته برای گرفتن را مشخص می کند. استفاده از مقدار 0 (صفر) به شما امکان می دهد کل بسته را ضبط کنید.
آدرس IP آدرس IP میزبانی است که می خواهیم بسته ها را برای آن ضبط کنیم
نام فایل نام فایلی است که tcpdump باید روی آن نوشته شود

مثال

فرض کنید می‌خواهید بسته‌ها را بین پردازشگر پیام و سرور Backend ضبط کنید:

  1. وارد دستگاه پردازشگر پیام شوید.
  2. آدرس IP سرور Backend را تعیین کنید (فرض کنید 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

می توانید tcpdumps را با استفاده از دستور tcpdump یا ابزار مبتنی بر رابط کاربری گرافیکی Wireshark مشاهده یا تجزیه و تحلیل کنید.

مراجع

زباله های انبوه

Heap dump ها یک عکس فوری از حافظه یک فرآیند جاوا هستند. آنها حاوی اطلاعات مربوط به اشیاء و کلاس های جاوا در پشته در لحظه جمع آوری heap dump هستند. آنها معمولاً از نظر اندازه بسیار بزرگ هستند و از چند 100 مگابایت تا چند گیگابایت متغیر هستند.

Heap dump زمانی بسیار مفید است که یک فرآیند جاوا مانند Message Processor نشان دهد:

  • استفاده از حافظه بالا
  • OutofMemoryError

ایجاد Heap Dump برای فرآیند جاوا

جاوا ابزاری به نام jmap ارائه می‌کند که به شما امکان می‌دهد آمار حافظه یا heap dump یک فرآیند جاوا در حال اجرا را تولید کنید.

از دستور jmap زیر برای تولید heap dump یک فرآیند جاوا استفاده کنید:

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

کجا:

پارامتر توضیحات
JAVA_HOME دایرکتوری نصب جاوا است
نام فایل نام فایلی است که heap dump روی آن نوشته می شود
pid شناسه فرآیند برنامه جاوا است که باید سر خالی آن گرفته شود

مثال

فرض کنید پردازشگر پیام mp-east از حافظه بالایی استفاده می کند یا خطاهای OutOfMemory را ایجاد می کند. شناسه فرآیند پردازشگر پیام را با استفاده از دستور ps در سیستم عامل یونیکس تعیین کنید. فرض کنید 24569 باشد.

برای ایجاد heap dump، ابزار jmap را به صورت زیر اجرا کنید:

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

تجزیه و تحلیل Heap Dumps

Heap Dumps را می توان با استفاده از Eclipse MAT (ابزار آنالیز حافظه) برای تعیین نشت بالقوه حافظه یا اینکه کدام اشیاء جاوا منجر به مصرف بالای حافظه می شوند، تجزیه و تحلیل کرد.

مراجع

نحوه جمع آوری زباله

ابزار jmap

صفحه مرد jmap

ابزار آنالیز حافظه (MAT)


تخلیه نخ

Thread dump یک عکس فوری از وضعیت تمام رشته‌های یک فرآیند جاوا در حال اجرا است. وضعیت هر رشته با محتویات پشته آن ارائه می شود که به آن رد پشته می گویند. برخی از رشته ها بخشی از برنامه جاوا هستند که در حال اجرا هستند، در حالی که برخی دیگر موضوعات داخلی JVM خواهند بود.

یک thread dump اطلاعاتی را در مورد هر یک از فعالیت های رشته برنامه نشان می دهد. این اطلاعات می تواند برای موارد زیر بسیار مفید باشد:

  • مشکلاتی مانند جهش پردازنده، زمان پاسخ آهسته، یا عدم پاسخگویی برنامه های جاوا را تشخیص دهید
  • بهینه سازی عملکرد برنامه و JVM

ایجاد تخلیه نخ

Thread dump برای یک فرآیند جاوا را می توان با استفاده از ابزار jstack مطابق شکل زیر ایجاد کرد:

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

کجا:

پارامتر توضیحات
JAVA_HOME دایرکتوری نصب جاوا است.
pid شناسه فرآیند برنامه جاوا است که می‌خواهید از موضوع موضوعی آن عکس بگیرید.
نام فایل نام فایلی است که thread dump روی آن نوشته می شود.

مثال

برای ایجاد یک thread dump برای شناسه فرآیند 37320 در Message Processor mp-east ، از دستور زیر استفاده کنید:

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

طبق مثال بالا، Thread Dump فرآیند در فایل /opt/apigee/edge-message-processor/mp-east-threadDump.txt ذخیره می شود.

تجزیه و تحلیل Thread Dumps

می‌توانید در هر ویرایشگر متنی مانند vi (لینوکس)، نوت‌پد (ویندوز) موارد خالی را مشاهده کنید. برای جزئیات بیشتر در مورد بخش های مختلف Thread Dump و نحوه تفسیر اطلاعات به Thread Dump مراجعه کنید.

مراجع