Alat diagnostik dan log

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:

  1. Masuk ke komputer Pemroses Pesan.
  2. 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

Cara mengumpulkan heap dump

utilitas jmap

halaman utama jmap

Memory Analyzer Tool (MAT)


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.

Referensi