全部产品
Search
文档中心

Application Real-Time Monitoring Service:Analisis Pengecualian

更新时间:Jul 06, 2025

Setelah menginstal agen Application Real-Time Monitoring Service (ARMS) untuk aplikasi Java, ARMS mulai memantau aplikasi tersebut. Anda dapat menanyakan jumlah pengecualian berdasarkan nama, antarmuka, atau host di halaman Pengecualian untuk mengoptimalkan kode yang menghasilkan pengecualian tersebut.

Penting

Pemantauan Aplikasi menyediakan halaman detail aplikasi baru bagi pengguna yang telah mengaktifkan mode penagihan baru.

Jika belum mengaktifkan mode penagihan baru, klik Beralih ke Versi Baru di halaman Daftar Aplikasi untuk melihat halaman detail aplikasi baru.

Skenario

ARMS mencatat pengecualian hanya jika mereka menyebar keluar dari blok try-catch. Misalnya, agen ARMS telah menginstrumentasikan public void methodA dan public void methodB, yang saling memanggil:

  • Skenario 1: Kedua metode menangkap pengecualian.

        public int methodA() {
            try {
                return methodB();
            } catch (Throwable e) {
                e.printStackTrace();
                return 0;
            }
        }
    
        public int methodB() {
            try {
                return 1 / 0;
            } catch (Throwable e) {
                e.printStackTrace();
                return 0;
            }
        }

    Hasil: ARMS tidak mencatat pengecualian karena mereka ditangkap dan ditangani dalam blok try-catch.

  • Skenario 2: methodA menangkap pengecualian, sedangkan methodB mengembalikannya.

        public int methodA() {
            try {
                return methodB();
            } catch (Throwable e) {
                e.printStackTrace();
                return 0;
            }
        }
    
        public int methodB() {
            return 1 / 0;
        }

    Hasil: ARMS mencatat satu pengecualian java.lang.ArithmeticException (tidak tertangkap di methodB).

  • Skenario 3: Kedua metode mengembalikan pengecualian.

        public int methodA() {    
            return methodB();
        }
    
        public int methodB() {
            return 1 / 0;
        }

    Hasil: ARMS mencatat dua pengecualian java.lang.ArithmeticException.

  • Skenario 4: methodA menangkap pengecualian methodB dan melemparkannya kembali sebagai RuntimeException.

        public static int methodA() {
            try {
                return methodB();
            } catch (Throwable e) {
                throw new RuntimeException(e);
            }
        }
    
        public static int methodB() {
            return 1 / 0;
        }

    Hasil: ARMS mencatat satu pengecualian java.lang.ArithmeticException (tidak tertangkap di methodB) dan satu pengecualian java.lang.RuntimeException (dilemparkan oleh methodA).

Prosedur

  1. Di bilah navigasi atas, pilih Scenario-based Analysis > Exceptions.

    image.png

    • Di bagian Penyaring Cepat (ikon 1), Anda dapat menanyakan pengecualian berdasarkan Pengecualian, Operasi, atau Host.

    • Di bagian grafik tren (ikon 2), Anda dapat melihat jumlah kali aplikasi melemparkan pengecualian dalam periode waktu tertentu. Kolom dengan pengecualian yang berbeda ditumpuk di atas satu sama lain.

      Klik ikon image.png. Di kotak dialog yang muncul, Anda dapat melihat data metrik dalam periode waktu tertentu atau membandingkan data metrik dalam periode waktu yang sama di tanggal yang berbeda. Anda dapat mengklik ikon image.png untuk menampilkan data dalam grafik kolom atau grafik tren.

    • Di bagian daftar pengecualian (ikon 3), Anda dapat melihat nama, jumlah kemunculan, persentase, dan informasi gambaran umum setiap pengecualian.

      Di daftar pengecualian, lakukan operasi berikut sesuai kebutuhan:

      • Klik Gambaran Umum di kolom Tindakan untuk melihat tren dalam jumlah pengecualian, distribusi antarmuka dan instans, serta tumpukan abnormal di panel yang muncul.

        image.png

      • Klik Jejak di kolom Tindakan untuk melihat detail jejak suatu antarmuka. Untuk informasi lebih lanjut, lihat Penjelajah Jejak.

Referensi

Untuk informasi tentang metrik Pemantauan Aplikasi, lihat Metrik Pemantauan Aplikasi.

FAQ

Mengapa jumlah pengecualian dalam panggilan antarmuka lebih besar daripada jumlah permintaan antarmuka?

Masalah ini dapat terjadi karena salah satu alasan berikut:

  • ARMS mencatat jumlah pengecualian ketika metode yang diinstrumen melemparkan pengecualian. Jika beberapa metode melemparkan pengecualian selama satu panggilan antarmuka dan metode-metode ini diinstrumen secara otomatis oleh agen ARMS, ARMS akan mencatat beberapa pengecualian dalam satu panggilan itu.

  • Jika pengecualian yang sama menyebar dari metode tingkat rendah ke metode tingkat atas, dan beberapa metode dalam tumpukan panggilan diinstrumen, pengecualian ini akan dicatat beberapa kali.

Mengapa pengecualian berubah setelah agen ARMS ditingkatkan?

Setiap kali agen ARMS ditingkatkan, metode yang diinstrumen dapat bertambah atau berkurang. Akibatnya, jumlah pengecualian yang dilemparkan dalam metode yang diinstrumen ini juga dapat bertambah atau berkurang sesuai dengan itu.

Mengapa tidak ada pengecualian terkait yang ditangkap oleh logika bisnis meskipun jumlah pengecualian di antarmuka bukan nol?

Dalam sebagian besar kode kerangka kerja yang diinstrumen, ketika pengecualian tertentu ditangkap dan ditangani dalam lapisan kerangka kerja dan tidak dilemparkan ke kode bisnis, agen ARMS dapat menangkap pengecualian ini, tetapi Anda mungkin tidak menyadarinya.

Sebagai contoh, ketika menggunakan MongoTemplate untuk mengakses MongoDB tanpa menemui kesalahan, Anda mungkin masih melihat kesalahan akses MongoDB di konsol ARMS. Ini karena MongoTemplate mengenkapsulasi logika ulang. Selama satu pemanggilan metode MongoTemplate, jika terjadi pengecualian timeout, ia akan mencoba lagi dan hanya melemparkan pengecualian ke pemanggil setelah beberapa kali gagal. Oleh karena itu, ketika menggunakan MongoTemplate untuk mengakses MongoDB dengan perilaku ulang di bawah, logika bisnis mungkin tidak melihat pengecualian, tetapi pengecualian terlihat di konsol ARMS.

Mengapa tumpukan pengecualian tidak cocok dengan pengecualian aktual yang terjadi di antarmuka?

Untuk meningkatkan efisiensi pemrosesan dan pelaporan data, agen ARMS menghasilkan string berdasarkan nama kelas pengecualian, tiga baris pertama dari tumpukan metode pengecualian, dan tiga baris terakhir dari tumpukan metode pengecualian. Kemudian ia mengkodekan string ini menjadi string 32-bit menggunakan CRC64. Pada laporan pertama, baik nilai yang dikodekan maupun nilai aslinya dilaporkan. Laporan berikutnya untuk pengecualian yang sama hanya mencakup nilai yang dikodekan. Dalam skenario berikut, tumpukan pengecualian tidak cocok dengan tumpukan aktual:

  • Tumpukan metode lengkap dari dua pengecualian berbeda, tetapi nama kelas pengecualian, tiga baris pertama dari tumpukan metode pengecualian, dan tiga baris terakhir dari tumpukan metode pengecualian sama. Dalam hal ini, logika pemrosesan menghasilkan nilai yang dikodekan yang sama, menyebabkan ketidakcocokan.

  • Nama kelas pengecualian, tiga baris pertama dari tumpukan metode pengecualian, dan tiga baris terakhir dari tumpukan metode pengecualian dari dua pengecualian berbeda, tetapi karena ketidakunikannya pengkodean CRC64, nilai yang dikodekan mereka mungkin tetap sama, menyebabkan ketidakcocokan.

Untuk memperbaiki ketidakcocokan, Anda dapat meningkatkan nilai parameter Kedalaman Diferensiasi Tumpukan Pengecualian Serupa di bagian Konfigurasi Penyaringan Lanjutan Pengecualian tab Konfigurasi Kustom.image

Mengapa konsol ARMS hanya menunjukkan satu ID dalam pengecualian setelah aplikasi telah berjalan selama lebih dari 30 hari?

Untuk mengoptimalkan volume data yang dilaporkan, ketika pengecualian terjadi untuk pertama kalinya, sistem mengkodekan pengecualian dan melaporkan baik nilai yang dikodekan maupun nilai aslinya ke server. Server menyimpan nilai yang dikodekan ini bersama dengan nilai aslinya, dengan durasi penyimpanan 30 hari. Setelah aplikasi telah berjalan selama 30 hari, mungkin tidak lagi memungkinkan untuk mengambil nilai asli pengecualian menggunakan nilai yang dikodekan.

Mengapa beberapa pengecualian tidak ditampilkan di konsol ARMS?

Agen ARMS tidak dapat menangkap semua pengecualian. Hanya pengecualian yang dilemparkan oleh metode yang diinstrumen yang dapat dikumpulkan oleh agen.

Jika agen ARMS adalah v4.1.12 atau lebih baru, Anda dapat mengaktifkan plugin yang sesuai dengan pengecualian di bagian Pengaturan Saklar Probe tab Konfigurasi Kustom. Kemudian, ARMS akan mengumpulkan data pengecualian setiap kali pengecualian terjadi.