Episode ini membahas pemecahan masalah umum NATS: slow consumer dan backpressure, redelivery tak berujung, storage penuh karena max_bytes, kehilangan quorum, dan subject collision, lengkap dengan perangkat diagnostik nats server check, stream report, consumer report, dan log debug.

Tidak ada sistem yang tidak pernah bermasalah. Episode 19 ini mempersenjatai kalian menghadapi masalah-masalah paling umum di NATS: consumer yang lambat, redelivery yang tak berujung, storage penuh, kehilangan quorum, dan tabrakan subject.
Untuk setiap masalah, kita akan bahas gejalanya, penyebabnya, dan cara memadamkannya dengan perangkat diagnostik yang sudah kalian kenal. Mari mulai dari masalah yang paling sering terjadi.
Slow consumer terjadi ketika consumer tidak mampu mengejar kecepatan publisher. Gejalanya: nats consumer report menunjukkan pending yang terus naik, dan pesan di stream menumpuk.
nats consumer report ORDERS
nats server check consumernats consumer report ORDERS menampilkan pending per consumer. nats server check consumer memverifikasi kesehatan seluruh consumer dalam satu langkah.
Redelivery tak berujung terjadi ketika worker tidak pernah berhasil mengack, padahal max_deliver tidak tercapai — biasanya karena ack_wait terlalu pendek untuk pekerjaan yang lama, atau handler memakai ack yang salah.
nats consumer report ORDERSnats consumer report ORDERS menunjukkan kolom Redeliveries. Angka yang tinggi dan naik terus berarti pesan gagal diproses berulang.
ack_wait agar sesuai durasi pemrosesan normal.msg.Ack() dipanggil di jalur sukses.max_deliver hanya jika benar-benar perlu, lalu kirim ke dead letter.nats consumer edit ORDERS WORKER --ack-wait 5m --max-deliver 5--ack-wait 5m memberi waktu proses lebih panjang. Aturan praktis: ack_wait harus lebih besar dari waktu proses terburuk yang masih wajar.
Stream tanpa batas ukuran akan terus membesar sampai memenuhi disk. Gejalanya: server crash, publish gagal, dan log menampilkan error storage.
nats stream report
df -hnats stream report menunjukkan penggunaan storage per stream; df -h memeriksa ruang disk server. Jika disk hampir penuh, tindakan harus segera.
max_bytes pada setiap stream.max_age untuk data yang tidak perlu lama.nats stream edit ORDERS --max-bytes 10G --max-age 30d--max-bytes 10G --max-age 30d membatasi stream hingga 10 GB atau 30 hari, mana yang tercapai lebih dulu. Dua batasan ini mencegah disk meledak.
Warning
Ketika storage penuh, JetStream akan menolak publish baru. Jangan menunggu sampai crash — pantau penggunaan disk dengan alerting seperti yang dibangun di episode 18, dan tetapkan batas sejak stream dibuat.
Quorum loss terjadi ketika jumlah node sehat kurang dari mayoritas. Gejalanya: stream replicas 3 menampilkan health menurun, publish ke stream gagal, dan leader tidak terpilih.
nats stream report
nats server check clusternats server check cluster memverifikasi kesehatan cluster dan quorum. Jika cluster kehilangan quorum, stream tidak bisa menerima tulis.
Subject collision terjadi ketika dua stream menangkap subject yang sama dalam satu akun. NATS menolak pembuatan stream kedua dengan error subject already covered by another stream.
nats stream report
nats stream info ORDERSnats stream info ORDERS menunjukkan daftar subject yang ditangkap. Membandingkan daftar subject antar stream mengungkap tumpang tindih.
orders.> dan orders.* bisa bertabrakan.Saat ada masalah, jalankan langkah berikut secara berurutan:
nats server check
nats stream report
nats consumer report
nats server check pingnats server check ping memeriksa latensi server. Tambahkan log debug bila perlu:
nats-server -DFlag -D mengaktifkan log debug. Nyalakan hanya saat investigasi, lalu matikan — log debug penuh di produksi menurunkan performa seperti yang dibahas di episode 18.
Episode 19 melatih kalian memadamkan api: slow consumer yang diatasi dengan menambah worker dan pull consumer, redelivery tak berujung yang diperbaiki lewat ack_wait yang tepat, storage penuh yang dicegah dengan batasan max_bytes dan max_age, quorum loss yang ditangani dengan menjaga jumlah node ganjil, serta subject collision yang dihindari dengan skema penamaan yang disiplin.
Inti yang harus dibawa pulang:
nats server check dan kedua report adalah senjata diagnostik utama.Di episode 20 selanjutnya kita akan membahas fitur stabil terbaru v2.14 — evolusi rilis dari v2.10 ke v2.12 lalu v2.14, panduan upgrade dan backward compatibility, serta fitur 2026: high-throughput publish, server-side message scheduling, perbaikan sourcing dan mirroring, dan metrik in_client serta out_client. Pengetahuan kalian akan diperbarui ke rilis terkini.