Anda sedang 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 sniffer TCP/IP (tcpdump)
Alat tcpdump adalah alat sniffer paket command line yang memungkinkan Anda menangkap atau memfilter paket TCP/IP yang diterima atau ditransfer melalui jaringan. Tersedia di sistem operasi berbasis Linux/Unix. Anda dapat menginstal utilitas ini menggunakan yum sebagai berikut:
yum install tcpdump
Alat {i>tcpdump<i} berguna untuk memecahkan masalah terkait jaringan atau SSL. Contoh:
- Error Gateway 502 buruk (disebabkan karena Pengecualian EOF)
- Error 503 Layanan Tidak Tersedia
- Kegagalan Handshake SSL
Untuk memecahkan salah satu masalah ini, pertama-tama Anda harus menentukan pasangan komponen tempat error terjadi. Dalam kasus Edge, pilihan tersebut dapat berupa salah satu pasangan berikut:
- Aplikasi klien dan Router
- Router dan Pemroses Pesan
- Pemroses Pesan dan Server Backend
Setelah mengidentifikasi pasangan komponen yang bermasalah, Anda dapat merekam paket jaringan menggunakan tcpdump pada salah satu atau kedua komponen tersebut.
Menangkap paket yang dikirim ke/diterima dari host tertentu menggunakan {i>tcpdump<i}
Gunakan perintah tcpdump berikut untuk menangkap semua paket yang dikirim ke atau diterima dari host (alamat IP) yang ditentukan dan menyimpan informasi dalam file yang ditentukan:
tcpdump -i any -s 0 host <IP address> -w <File name>
Dengan keterangan:
Parameter | Deskripsi |
-i | (antarmuka) menentukan antarmuka tempat paket harus diambil. Penggunaan nilai "any" memungkinkan penangkapan paket dari semua antarmuka. |
-s | (snarf/snaplen) menentukan jumlah setiap paket yang akan diambil. Menggunakan nilai 0 (nol) memungkinkan Anda menangkap seluruh paket. |
IP address | adalah alamat ip {i>host<i} di mana kita ingin menangkap paketnya |
Nama File | adalah nama file tempat {i>tcpdump<i} harus ditulis |
Contoh
Misalkan Anda ingin menangkap paket antara Pemroses Pesan dan Server Backend:
- Login ke mesin Pemroses Pesan.
- Tentukan alamat IP Server Backend (anggaplah 22.22.22.22) yang paketnya ingin kita ambil.
Gunakan perintah berikut guna merekam 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 me-resolve ke beberapa alamat IP, gunakan nama host server backend dalam perintah tcpdump seperti yang ditunjukkan di bawah ini:
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 ini:
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 {i>tcpdump<i}
Anda dapat melihat atau menganalisis tcpdump menggunakan perintah tcpdump atau alat berbasis GUI Wireshark.
Referensi
Heap dump
Heap dump adalah snapshot dari memori proses Java. File ini berisi informasi tentang objek dan class Java dalam heap pada saat heap dump dikumpulkan. File ini biasanya berukuran cukup besar, berkisar antara beberapa 100 MB hingga beberapa GB.
Heap dump sangat berguna ketika proses Java seperti Message Processor menampilkan:
- Penggunaan Memori Tinggi
- OutofMemoryError
Menghasilkan Heap dump untuk proses Java
Java menyediakan utilitas bernama jmap, yang memungkinkan Anda membuat statistik memori atau heap dump dari proses Java yang sedang berjalan.
Gunakan perintah jmap berikut untuk membuat heap dump proses Java:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
Dengan keterangan:
Parameter | Deskripsi |
JAVA_HOME | Adalah direktori penginstalan Java |
filename | Adalah nama file yang akan digunakan untuk menulis heap dump |
pid | Apakah ID proses aplikasi Java yang head dumpnya harus diambil |
Contoh
Misalnya, Message Processor mp-east memiliki penggunaan memori yang tinggi atau memunculkan Error OutOfMemory. Tentukan ID proses Message Processor menggunakan perintah ps pada sistem operasi Unix. Misalnya, 24569.
Jalankan utilitas jmap sebagai berikut untuk menghasilkan 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 tinggi.
Referensi
Alat Penganalisis Memori (MAT)
Thread dump
Thread dump adalah snapshot status semua thread dari proses Java yang berjalan. Status setiap thread ditampilkan dengan konten stack-nya, yang disebut sebagai pelacakan tumpukan. Beberapa thread akan menjadi bagian dari aplikasi Java yang berjalan, sementara yang lainnya akan menjadi thread internal JVM.
Thread dump mengungkap informasi tentang setiap aktivitas thread aplikasi. Informasi ini bisa sangat berguna untuk:
- Diagnosis masalah seperti lonjakan CPU, waktu respons yang lambat, atau aplikasi Java yang tidak responsif
- Mengoptimalkan performa aplikasi dan JVM
Menghasilkan Dump Thread
Thread dump untuk proses Java dapat dibuat menggunakan utilitas jstack seperti ditunjukkan di bawah ini:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Dengan keterangan:
Parameter | Deskripsi |
JAVA_HOME | Merupakan direktori penginstalan Java. |
pid | Merupakan ID proses aplikasi Java yang thread dumpnya ingin Anda tangkap. |
filename | Merupakan nama file tempat thread dump akan dituliskan. |
Contoh
Untuk menghasilkan thread dump bagi ID proses 37320 pada 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 Dump Thread
Anda dapat melihat thread dump di editor teks seperti vi (Linux), notepad (Windows). Lihat Thread Dump untuk detail tentang berbagai bagian Thread Dump dan cara menafsirkan informasi ini.