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 paket TCP/IP (tcpdump)
Alat tcpdump adalah alat sniffer paket command line yang memungkinkan Anda untuk menangkap atau menyaring paket TCP/IP yang diterima atau ditransfer melalui jaringan. Tersedia di sistem operasi berbasis Linux/Unix. Anda dapat menginstal utilitas ini menggunakan {i>yum<i} sebagai berikut ini:
yum install tcpdump
Alat {i>tcpdump<i} berguna untuk memecahkan masalah terkait jaringan atau SSL. Contoh:
- 502 Error Gateway Buruk (disebabkan karena Pengecualian EOF)
- Error Layanan Tidak Tersedia 503
- Kegagalan Handshake SSL
Untuk memecahkan salah satu masalah ini, Anda harus terlebih dahulu menentukan pasangan komponen di antara tempat error terjadi. Dalam kasus Edge, kode dapat berupa salah satu dari pasangan berikut:
- Aplikasi klien dan Router
- Router dan Pemroses Pesan
- Pemroses Pesan dan server Backend
Setelah Anda mengidentifikasi pasangan komponen yang merepotkan, Anda dapat menangkap paket jaringan menggunakan {i>tcpdump<i} pada salah satu atau kedua komponen ini.
Menangkap paket yang dikirim ke/diterima dari {i>host<i} tertentu menggunakan {i>tcpdump<i}
Gunakan perintah {i>tcpdump<i} berikut untuk menangkap semua paket yang dikirim ke atau diterima dari host yang ditentukan (alamat IP) 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 dari mana paket harus ditangkap. Menggunakan nilai “any” memungkinkan untuk menangkap paket dari semua antarmuka. |
-s | (snarf/snaplen) menentukan jumlah setiap paket yang akan ditangkap. Menggunakan nilai 0 (nol) memungkinkan Anda untuk menangkap seluruh paket. |
IP address | adalah alamat IP dari {i>host<i} yang paketnya ingin kita tangkap |
Nama File | adalah nama file tempat {i>tcpdump<i} harus ditulis |
Contoh
Katakanlah Anda ingin menangkap paket antara {i>Message Processor<i} dan Backend Server:
- Masuk ke komputer Pemroses Pesan.
- Tentukan alamat IP dari Server Backend (asumsikan itu adalah 22.22.22.22) yang kita inginkan untuk menangkap paket.
Gunakan perintah berikut untuk merekam paket jaringan untuk host dengan IP spesifik alamat:
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 backend server dalam perintah {i>tcpdump<i} 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), kemudian gunakan perintah {i>tcpdump<i} 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 tcpdump
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 tersebut berisi informasi tentang objek dan class Java di heap pada saat heap dump kumpulkan. File-file ini biasanya berukuran cukup besar dengan rentang antara beberapa 100MB hingga beberapa GB.
Heap dump sangat berguna saat proses Java seperti Pemroses Pesan menampilkan:
- Penggunaan Memori Tinggi
- OutofMemoryError
Membuat Heap dump untuk proses Java
Java menyediakan utilitas bernama jmap, yang memungkinkan Anda menghasilkan memori statistik 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 | Apakah direktori penginstalan Java |
filename | Apakah nama file yang akan menjadi tujuan penulisan heap dump |
pid | Adalah ID proses aplikasi Java yang head dumpnya harus ditangkap |
Contoh
Katakanlah mp-east {i>Message Processor<i} memiliki penggunaan memori yang tinggi atau menampilkan Error OutOfMemory. Menentukan ID proses dari Pemroses Pesan menggunakan perintah {i>ps<i} pada Sistem operasi Unix. Misalnya 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 Dumps 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. Tujuan setiap thread menampilkan konten tumpukannya, yang disebut pelacakan tumpukan. Beberapa thread akan menjadi bagian dari aplikasi Java yang sedang berjalan, sementara yang lainnya akan menjadi bagian dari aplikasi Java yang sedang berjalan. Thread internal JVM.
Thread dump mengungkapkan informasi tentang setiap aktivitas thread aplikasi. Informasi ini bisa sangat berguna untuk:
- Mendiagnosis masalah seperti lonjakan CPU, waktu respons yang lambat, atau Java yang tidak responsif berbagai aplikasi
- Mengoptimalkan performa aplikasi dan JVM
Membuat Dump Thread
Thread dump untuk proses Java dapat dibuat menggunakan utilitas jstack seperti yang ditunjukkan di bawah ini:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Dengan keterangan:
Parameter | Deskripsi |
JAVA_HOME | Adalah direktori penginstalan Java. |
pid | Adalah ID proses aplikasi Java yang thread dumpnya ingin Anda tangkap. |
filename | Apakah nama file tempat thread dump akan ditulis. |
Contoh
Untuk membuat thread dump bagi ID proses 37320 di Pemroses Pesan 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 apa pun seperti vi (Linux), notepad (Windows). Rujuk Pembuangan Thread untuk detail tentang berbagai bagian Pembuangan Thread dan cara menafsirkan tidak akurat atau tidak sesuai.