Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Topik ini membahas alat jaringan, alat JVM, dan log diagnostik yang dapat Anda gunakan untuk memecahkan masalah terkait jaringan dan JVM di Apigee Edge.
Utilitas TCP/IP packet sniffer (tcpdump)
Alat tcpdump adalah alat packet sniffer command line yang memungkinkan Anda menangkap atau memfilter paket TCP/IP yang diterima atau ditransfer melalui jaringan. Alat ini tersedia di sistem operasi berbasis Linux/Unix. Anda dapat menginstal utilitas ini menggunakan yum sebagai berikut:
yum install tcpdump
Alat tcpdump berguna untuk memecahkan masalah terkait jaringan atau SSL. Contoh:
- Error 502 Bad Gateway (disebabkan oleh EOF Exception)
- Error 503 Layanan Tidak Tersedia
- Kegagalan Handshake SSL
Untuk memecahkan masalah ini, Anda harus menentukan terlebih dahulu pasangan komponen yang menyebabkan error. Dalam kasus Edge, pasangan komponen tersebut dapat berupa salah satu pasangan berikut:
- Aplikasi klien dan Router
- Router dan Message Processor
- Message Processor dan server Backend
Setelah mengidentifikasi pasangan komponen yang bermasalah, Anda dapat menangkap paket jaringan menggunakan tcpdump pada satu atau kedua komponen ini.
Menangkap paket yang dikirim ke/diterima dari host tertentu menggunakan tcpdump
Gunakan perintah tcpdump berikut untuk menangkap semua paket yang dikirim ke atau diterima dari a host (alamat IP) tertentu dan menyimpan informasi dalam file yang ditentukan:
tcpdump -i any -s 0 host <IP address> -w <File name>
Dengan:
| Parameter | Deskripsi |
| -i | (interface) menentukan antarmuka tempat paket harus ditangkap. Menggunakan nilai “any” memungkinkan Anda menangkap paket dari semua antarmuka. |
| -s | (snarf/snaplen) menentukan jumlah setiap paket yang akan ditangkap. Menggunakan nilai 0 (nol) memungkinkan Anda menangkap seluruh paket. |
| IP address | adalah alamat IP host yang paketnya ingin kita tangkap |
| Nama File | adalah nama file yang harus ditulis oleh tcpdump |
Contoh
Misalnya, Anda ingin menangkap paket antara Message Processor dan Server Backend:
- Login ke mesin Message Processor.
- Tentukan alamat IP Server Backend (anggap alamat IP-nya adalah 22.22.22.22) yang paketnya ingin kita tangkap.
Gunakan perintah berikut untuk menangkap paket jaringan untuk host dengan alamat IP tertentu:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
Jika server backend di-resolve ke beberapa alamat IP, gunakan nama host server backend dalam perintah tcpdump seperti yang ditunjukkan di bawah:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
Jika ada beberapa server backend dengan alamat IP yang berbeda (22.22.22.22, 33.33.33.33 dan 44.44.44.44), gunakan perintah tcpdump di bawah:
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
Menganalisis tcpdump
Anda dapat melihat atau menganalisis tcpdump menggunakan perintah tcpdump atau alat berbasis GUI Wireshark.
Referensi
Heap dump
Heap dump adalah snapshot memori proses Java. Heap dump berisi informasi tentang objek dan class Java dalam heap pada saat heap dump dikumpulkan. Heap dump biasanya berukuran cukup besar, mulai dari beberapa ratus MB hingga beberapa GB.
Heap dump sangat berguna jika proses Java seperti Message Processor menunjukkan:
- Penggunaan Memori Tinggi
- OutofMemoryError
Membuat heap dump untuk proses Java
Java menyediakan utilitas yang disebut jmap, yang memungkinkan Anda membuat statistik memori atau heap dump dari proses Java yang sedang berjalan.
Gunakan perintah jmap berikut untuk membuat heap dump dari proses Java:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
Dengan:
| Parameter | Deskripsi |
| JAVA_HOME | Adalah direktori penginstalan Java |
| filename | Adalah nama file tempat heap dump akan ditulis |
| pid | Adalah ID proses aplikasi Java yang heap dump-nya harus ditangkap |
Contoh
Misalnya, Message Processor mp-east memiliki penggunaan memori yang tinggi atau menampilkan Error OutOfMemory. Tentukan ID proses Message Processor menggunakan perintah ps di sistem operasi Unix. Misalnya, ID prosesnya adalah 24569.
Jalankan utilitas jmap sebagai berikut untuk membuat heap dump:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
Menganalisis Heap Dump
Heap Dump dapat dianalisis menggunakan Eclipse MAT (Memory Analyzer Tool) untuk menentukan potensi kebocoran memori atau objek Java mana yang menyebabkan penggunaan memori yang tinggi.
Referensi
Thread dump
Thread dump adalah snapshot status semua thread dari proses Java yang sedang berjalan. Status setiap thread ditampilkan dengan konten stack-nya, yang disebut sebagai stack trace. Beberapa thread akan menjadi bagian dari aplikasi Java yang sedang berjalan, sedangkan thread lainnya akan menjadi thread internal JVM.
Thread dump menampilkan informasi tentang setiap aktivitas thread aplikasi. Informasi ini dapat sangat berguna untuk:
- Mendiagnosis masalah seperti lonjakan CPU, waktu respons yang lambat, atau aplikasi Java yang tidak responsif
- Mengoptimalkan performa aplikasi dan JVM
Membuat Thread Dump
Thread dump untuk proses Java dapat dibuat menggunakan utilitas jstack seperti yang ditunjukkan di bawah:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Dengan:
| Parameter | Deskripsi |
| JAVA_HOME | Adalah direktori penginstalan Java. |
| pid | Adalah ID proses aplikasi Java yang thread dump-nya ingin Anda tangkap. |
| filename | Adalah nama file tempat thread dump akan ditulis. |
Contoh
Untuk membuat thread dump untuk ID proses 37320 di Message Processor mp-east, gunakan perintah berikut:
sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt
Sesuai contoh di atas, thread dump proses akan disimpan ke file /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Menganalisis Thread Dump
Anda dapat melihat thread dump di editor teks apa pun seperti vi (Linux), notepad (Windows). Lihat Thread Dump untuk mengetahui detail tentang berbagai bagian Thread Dump dan cara menafsirkan informasi.