شما در حال مشاهده اسناد 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 ضبط کنید:
- وارد دستگاه پردازشگر پیام شوید.
- آدرس 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 (ابزار آنالیز حافظه) برای تعیین نشت بالقوه حافظه یا اینکه کدام اشیاء جاوا منجر به مصرف بالای حافظه می شوند، تجزیه و تحلیل کرد.
مراجع
تخلیه نخ
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 مراجعه کنید.