Dalam sistem pemantauan aplikasi seperti APM Jennifer, error merupakan data yang menunjukkan adanya kondisi abnormal yang terjadi selama proses monitoring. Error biasanya muncul ketika sebuah transaksi gagal dijalankan dengan benar akibat gangguan tertentu seperti kesalahan koneksi jaringan, kekurangan memori, kesalahan sintaks program, atau waktu respons yang melampaui batas. Karena semua error dikumpulkan secara menyeluruh, jumlahnya dapat melebihi jumlah transaksi, sebab satu transaksi bisa menghasilkan beberapa error sekaligus. Setiap error memiliki tipe dan karakteristik yang berbeda, dan dapat dilihat melalui tampilan X-view Transaction Analysis, di mana setiap transaksi yang mengalami kegagalan dapat dianalisis secara detail.
Jenis-Jenis Error
Berikut adalah berbagai jenis error yang umum muncul dalam Analisis Error pada APM JENNIFER :
| Error Tipe | Deskripsi | Penyebab Umum | Rekomendasi / Mitigasi |
|---|---|---|---|
| HTTP_IO_EXCEPTION | Transaksi terhenti karena terjadi IOException | Koneksi HTTP putus, timeout, masalah jaringan. | Periksa koneksi jaringan dan atur timeout; gunakan retry logic atau circuit breaker. |
| HTTP_404_ERROR | Resource yang diminta tidak ditemukan. | URL salah, endpoint tidak tersedia. | Pastikan routing benar dan endpoint aktif. |
| OUT_OF_MEMORY | Transaksi berhenti karena kekurangan memori. | Memory leak, konfigurasi heap kecil. | Optimasi memory usage, profiling heap, perbesar limit. |
| SERVICE_EXCEPTION | Exception umum sel ain IO/OutOfMemory. | NullPointerException, IllegalArgument, dll. | Tambahkan handling exception dan validasi input. |
| SERVICE_ERROR |
Transaksi berhenti karena Java error. |
Error runtime atau classpath. | Cek dependensi dan update library. |
| DB_CONNECTION_UNCLOSED | Koneksi database tidak ditutup. |
Lupa close() pada koneksi. |
Gunakan connection pool dan pastikan ditutup dalam finally block. |
| DB_STATEMENT_UNCLOSED | Statement tidak ditutup setelah digunakan. | Resource leak pada statement. | Gunakan try-with-resources. |
| DB_RESULTSET_UNCLOSED | ResultSet tidak ditutup. | Lupa menutup ResultSet setelah query. | Selalu tutup ResultSet atau gunakan ORM. |
| PLC_REJECTED | Request ditolak oleh fungsi Peak Load Control (PLC). | Sistem dalam kondisi beban puncak. | Sesuaikan threshold PLC atau tambah kapasitas. |
| DEADLOCK | Terjadi deadlock antar-thread. | Locking tidak konsisten antar proses. | Analisa trace dan perbaiki urutan penguncian. |
| METHOD_EXCEPTION | Method profiled berhenti karena exception. | Exception pada business logic. | Logging detil, validasi parameter method. |
| RECURSIVE_CALL | Pemanggilan servlet/JSP terlalu dalam. | Forward/include berulang. | Cegah loop forward, atur batas recursion. |
| REPETITIVE_CALL | Request berulang dari IP yang sama. | Loop client, retry bug, DDoS. | Rate limit per IP atau gunakan captcha. |
| SQL_EXCEPTION | Exception saat menjalankan query SQL. | Query error, constraint violation. | Gunakan parameterized query, validasi input SQL. |
| SQL_TOOMANY_FETCH | Jumlah fetch SQL melebihi batas (10.000). | Query tanpa limit/pagination. | Gunakan LIMIT, pagination, atau batching. |
| EXTERNALCALL_EXCEPTION | External call berhenti karena exception. | Timeout, service eksternal gagal. | Implementasi retry dan circuit breaker. |
| DB_CONNECTION_FAIL | Koneksi ke database gagal. | DB down, kredensial salah. | Cek konektivitas dan health DB. |
| DB_UN_COMMIT_ROLLBACK | Koneksi ditutup tanpa commit/rollback. | Transaksi tidak tertutup. | Pastikan commit/rollback selalu dijalankan. |
| DB_CONNECTION_ILLEGAL_ACCESS | Thread pengguna berbeda dengan pembuat koneksi. | Sharing connection antar-thread. | Gunakan connection pool dengan isolasi thread. |
| CORE_ERROR | Error inisialisasi engine PHP. | Modul PHP rusak, konfigurasi salah. | Periksa log PHP dan reinstall extension. |
| COMPILE_ERROR | Error saat kompilasi PHP script. | Syntax error, file rusak. | Perbaiki syntax, gunakan lint sebelum deploy. |
| PARSE_ERROR | Error parsing PHP script. | Struktur kode tidak valid. | Validasi syntax dan jalankan unit test. |
| PHP_WARNING | Peringatan saat eksekusi PHP. | Fungsi deprecated atau variabel tidak didefinisikan. | Bersihkan warning, aktifkan strict mode. |
| NATIVE_CRITICAL_ERROR | Segmentation fault atau abort signal. | Bug native extension. | Update library native, isolasi ekstensi. |
| BAD_RESPONSE_TIME_APPLICATION | Response time aplikasi melebihi ambang (30s). | Query lambat, blocking I/O. | Profiling dan optimasi kode lambat. |
| BAD_RESPONSE_TIME_SQL | Response SQL melebihi ambang (20s). | Query kompleks tanpa indeks. | Buat indeks, optimalkan SQL. |
| BAD_RESPONSE_TIME_EXTERNAL_CALL | Waktu respon external call melebihi batas (20s). | API eksternal lambat. | Gunakan caching, async call, dan timeout. |
| AGENT_STOP | Agen kehilangan koneksi ke server data. | Server dimatikan atau jaringan terputus. | Cek log agent, network, restart jika perlu. |
| AGENT_START | Aplikasi baru terhubung ke data server. | Startup aplikasi normal. | Tidak perlu tindakan; event informatif. |
| AGENT_RECONNECT | Reconnect karena gangguan sementara. | Network flapping, restart agent. | Periksa kestabilan koneksi jaringan. |
| THREAD_KILL_MANUAL | Transaksi dihentikan manual oleh pengguna. | Admin menghentikan proses aktif. | Validasi alasan stop dan dokumentasikan. |
| THREAD_KILL_AUTO | Transaksi dihentikan otomatis oleh JENNIFER. | Timeout atau auto-stop aktif. | Tuning threshold dan perbaiki slow transaction. |
| NOT_ENOUGH_DISK_SPACE | Ruang disk agent melebihi ambang batas. | Log tidak dirotasi, file besar. | Bersihkan log, aktifkan log rotation, tambah kapasitas disk. |
Catatan Penting:
- Harap jangan bingung antara ERROR dan EVENT. ERROR adalah catatan tentang suatu kondisi abnormal (tidak normal), sedangkan ERROR dapat dianggap sebagai EVENT jika administrator menetapkan aturan tertentu.
Untuk informasi lebih lanjut tentang EVENT, lihat bagian EVENT Monitoring. - Ketika terjadi ERROR tertentu saat aplikasi berjalan, transaksi yang terkait akan diproses sebagai kegagalan (failure).