شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
این مبحث در مورد ابزارهای شبکه، ابزارهای JVM و گزارشهای تشخیصی است که میتوانید برای عیبیابی مشکلات مربوط به شبکه و JVM در Apigee Edge از آنها استفاده کنید.
ابزار شنود بستههای TCP/IP (tcpdump)
ابزار tcpdump یک ابزار شنود بستههای اطلاعاتی تحت خط فرمان است که به شما امکان میدهد بستههای TCP/IP دریافتی یا ارسالی از طریق شبکه را ضبط یا فیلتر کنید. این ابزار در سیستم عاملهای مبتنی بر لینوکس/یونیکس موجود است. میتوانید این ابزار را با استفاده از yum به صورت زیر نصب کنید:
yum install tcpdump
ابزار tcpdump برای عیبیابی مشکلات مربوط به شبکه یا SSL مفید است. برای مثال:
- خطاهای ۵۰۲ Bad Gateway (ناشی از استثنای EOF)
- خطاهای 503 عدم دسترسی به سرویس
- خطاهای SSL Handshake
برای عیبیابی هر یک از این مشکلات، ابتدا باید جفت اجزایی را که خطا بین آنها رخ داده است، تعیین کنید. در مورد Edge، میتواند یکی از جفتهای زیر باشد:
- برنامه کلاینت و روتر
- روتر و پردازنده پیام
- پردازنده پیام و سرور Backend
پس از شناسایی جفت اجزای مشکلساز، میتوانید بستههای شبکه را با استفاده از tcpdump روی یک یا هر دوی این اجزا ضبط کنید.
ضبط بستههای ارسالی/دریافتی از یک میزبان خاص با استفاده از tcpdump
از دستور tcpdump زیر برای ضبط تمام بستههای ارسالی یا دریافتی از یک میزبان (آدرس IP) مشخص شده و ذخیره اطلاعات در فایل مشخص شده استفاده کنید:
tcpdump -i any -s 0 host <IP address> -w <File name>
کجا:
| پارامتر | توضیحات |
| -ی | (interface) رابطی را مشخص میکند که بستهها باید از آن گرفته شوند. استفاده از مقدار «any» امکان گرفتن بستهها از همه رابطها را فراهم میکند. |
| -ها | (snarf/snaplen) مقدار هر بستهای که باید ضبط شود را مشخص میکند. استفاده از مقدار 0 (صفر) به شما امکان میدهد کل بسته را ضبط کنید. |
| آدرس آیپی | آدرس IP میزبانی است که میخواهیم بستههای آن را ضبط کنیم. |
| نام فایل | نام فایلی است که tcpdump باید در آن نوشته شود. |
مثال
فرض کنید میخواهید بستههای بین پردازنده پیام و سرور Backend را ضبط کنید:
- وارد دستگاه پردازشگر پیام شوید.
- آدرس IP سرور Backend (فرض کنید 22.22.22.22 است) را که میخواهیم بستههای آن را ضبط کنیم، تعیین کنید.
برای ضبط بستههای شبکه برای یک میزبان با آدرس IP خاص، از دستور زیر استفاده کنید:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
اگر سرور backend به چندین آدرس IP متصل است، از نام میزبان سرور backend در دستور tcpdump مطابق شکل زیر استفاده کنید:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
اگر چندین سرور backend با آدرسهای 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ها را با استفاده از دستور tcpdump یا ابزار مبتنی بر رابط کاربری گرافیکی Wireshark مشاهده یا تجزیه و تحلیل کنید.
منابع
هیپ دامپها
دادههای هیپ (Heap dumps) تصویری لحظهای از حافظهی یک فرآیند جاوا هستند. آنها حاوی اطلاعات مربوط به اشیاء و کلاسهای جاوا در هیپ در لحظهی جمعآوری دادههای هیپ هستند. آنها معمولاً حجم بسیار زیادی دارند و بین چند صد مگابایت تا چند گیگابایت متغیر هستند.
Heap dump زمانی بسیار مفید است که یک فرآیند جاوا مانند Message Processor موارد زیر را نشان دهد:
- استفاده زیاد از حافظه
- خطای خارج از حافظه
تولید Heap dump برای یک فرآیند جاوا
جاوا ابزاری به نام jmap ارائه میدهد که به شما امکان میدهد آمار حافظه یا دادههای هیپ دامپ یک فرآیند جاوای در حال اجرا را تولید کنید.
از دستور jmap زیر برای تولید heap dump از یک فرآیند جاوا استفاده کنید:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
کجا:
| پارامتر | توضیحات |
| خانه جاوا | آیا دایرکتوری نصب جاوا است؟ |
| نام فایل | نام فایلی است که هیپ دامپ در آن نوشته خواهد شد. |
| پی دی | آیا شناسه فرآیند برنامه جاوایی است که باید روگرفت سر آن ثبت شود؟ |
مثال
فرض کنید پردازشگر پیام mp-east مصرف حافظه بالایی دارد یا خطاهای OutOfMemory میدهد. شناسه فرآیند پردازشگر پیام را با استفاده از دستور ps در سیستم عامل یونیکس تعیین کنید. فرض کنید 24569 است.
ابزار jmap را به صورت زیر اجرا کنید تا heap dump تولید شود:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
تحلیل هیپ دامپها
میتوان با استفاده از ابزار تحلیل حافظه Eclipse MAT (ابزار تحلیل حافظه) دادههای Heap Dump را تجزیه و تحلیل کرد تا نشت حافظه بالقوه یا اینکه کدام اشیاء جاوا منجر به استفاده زیاد از حافظه میشوند، مشخص شود.
منابع
تخلیه نخها
یک dump از thread، تصویری لحظهای از وضعیت تمام threadهای یک فرآیند جاوای در حال اجرا است. وضعیت هر thread به همراه محتویات پشته آن ارائه میشود که به آن stack trace گفته میشود. برخی از threadها بخشی از برنامه جاوای در حال اجرا هستند، در حالی که برخی دیگر، threadهای داخلی JVM خواهند بود.
یک dump از thread اطلاعاتی در مورد هر یک از فعالیتهای threadهای برنامه را فاش میکند. این اطلاعات میتواند برای موارد زیر بسیار مفید باشد:
- تشخیص مشکلاتی مانند افزایش ناگهانی سرعت CPU، زمان پاسخدهی کند یا عدم پاسخگویی برنامههای جاوا
- بهینهسازی عملکرد برنامه و JVM
تولید دامپهای نخ
دامپ ترد برای یک فرآیند جاوا میتواند با استفاده از ابزار jstack مطابق شکل زیر تولید شود:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
کجا:
| پارامتر | توضیحات |
| خانه جاوا | دایرکتوری نصب جاوا است. |
| پی دی | آیا شناسه فرآیند برنامه جاوایی است که میخواهید دامپ ترد آن را ضبط کنید؟ |
| نام فایل | نام فایلی است که dump نخ در آن نوشته خواهد شد. |
مثال
برای تولید یک dump از thread برای فرآیند با شناسه ۳۷۳۲۰ در Message Processor mp-east ، از دستور زیر استفاده کنید:
sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt
مطابق مثال بالا، dump ترد فرآیند در فایل /opt/apigee/edge-message-processor/mp-east-threadDump.txt ذخیره میشود.
تحلیل دامپهای نخ
شما میتوانید دادههای مربوط به رشتهها را در هر ویرایشگر متنی مانند vi (لینوکس)، notepad (ویندوز) مشاهده کنید. برای جزئیات بیشتر در مورد بخشهای مختلف Thread Dump و نحوه تفسیر اطلاعات، به Thread Dump مراجعه کنید.