全部产品
Search
文档中心

ApsaraMQ for Kafka:Apa yang harus saya lakukan jika pesan terakumulasi saat saya menggunakan ApsaraMQ for Kafka?

更新时间:Jul 02, 2025

Saat menggunakan ApsaraMQ for Kafka, akumulasi pesan dapat terjadi dalam sebuah grup. Topik ini menjelaskan cara menentukan apakah akumulasi pesan normal dan bagaimana menangani akumulasi pesan yang abnormal.

Proses konsumsi pada klien

Untuk memahami apakah ada akumulasi pesan, Anda perlu memahami bagaimana pesan dikonsumsi pada klien. Gambar berikut menggambarkan proses konsumsi.

Tentukan apakah akumulasi pesan normal

Jika akumulasi pesan terjadi dalam sebuah grup, ikuti langkah-langkah berikut untuk menentukan apakah akumulasi tersebut normal:

  1. Masuk ke Konsol ApsaraMQ for Kafka.

  2. Di bilah navigasi atas, pilih wilayah tempat instance ApsaraMQ for Kafka Anda berada.

  3. Di panel navigasi di sebelah kiri, klik Instances.

  4. Di halaman Instances, klik nama instance yang ingin Anda kelola.

  5. Di panel navigasi di sebelah kiri halaman Instance Details, klik Groups.

  6. Di halaman Groups, temukan grup yang ingin Anda kelola dan pilih More > Consumer Status di kolom Actions.

  7. Di halaman Consumer Status, tentukan apakah akumulasi pesan normal berdasarkan nilai parameter Last Consumed At, Accumulated Messages, dan Consumer Offset. Nilai-nilai parameter ini dicatat setiap interval 1 menit.

    Catatan

    Anda dapat mengklik Details untuk melihat offset konsumen.

    • Waktu konsumsi terbaru mendekati waktu saat ini, dan jumlah pesan terakumulasi berfluktuasi dalam rentang stabil yang diharapkan. Ini menunjukkan bahwa klien sedang menarik pesan baru, dan akumulasi pesan adalah normal.

      Catatan

      Jumlah pesan terakumulasi bervariasi berdasarkan laju produksi pesan dan frekuensi commit offset konsumen. Nilai besar dari parameter Accumulated Messages tidak menunjukkan akumulasi pesan yang abnormal. Sebagai contoh, jika transaksi per detik (TPS) untuk mengirim pesan dalam topik adalah 10.000, dan frekuensi commit offset konsumen adalah sekali per detik, jumlah pesan terakumulasi mungkin berfluktuasi sekitar 10.000 dalam skenario normal.

    • Jumlah pesan terakumulasi secara bertahap meningkat, dan offset konsumen tetap tidak berubah. Ini menunjukkan bahwa thread konsumen pada klien terblokir, dan klien berhenti mengonsumsi pesan serta melakukan commit offset konsumen ke broker. Dalam kasus ini, akumulasi pesan adalah abnormal. Untuk informasi tentang cara menyelesaikan masalah ini, lihat bagian "Cara menangani akumulasi pesan yang abnormal" dari topik ini.

    • Jumlah pesan terakumulasi secara bertahap meningkat, dan offset konsumen sedang dikomit. Ini menunjukkan bahwa klien masih mengonsumsi pesan, tetapi laju konsumsi pesan lebih rendah daripada laju produksi pesan. Dalam kasus ini, akumulasi pesan adalah abnormal. Pesan secara aktif ditarik dari broker oleh klien. Oleh karena itu, masalah ini tidak disebabkan oleh operasi di Langkah 1 dari bagian "Proses konsumsi pada klien" dari topik ini. Dalam kasus ini, periksa durasi konsumsi di Langkah 2. Untuk informasi tentang cara menyelesaikan masalah ini, lihat bagian "Cara menangani akumulasi pesan yang abnormal" dari topik ini.

      Catatan

      Dalam kebanyakan kasus, akumulasi pesan yang abnormal disebabkan oleh konsumsi pesan yang lambat atau thread konsumsi yang terblokir. Kami menyarankan agar Anda tidak menetapkan durasi panjang untuk parameter terkait dalam logika konsumsi.

    • Pesan terakumulasi di partisi, tetapi konsumsi di sistem hilir normal. Mode konsumsi assign mungkin digunakan oleh sistem hilir. Dalam mode ini, offset dikelola oleh Anda sendiri. Dalam kasus ini, pesan mungkin telah dikonsumsi. Pesan ditampilkan sebagai terakumulasi karena offset yang belum dikomit. Kami menyarankan agar Anda secara manual melakukan commit offset sesegera mungkin untuk menyelesaikan masalah akumulasi pesan.

Cara menangani akumulasi pesan yang abnormal

Setelah Anda mengonfirmasi bahwa akumulasi pesan yang abnormal ada berdasarkan operasi sebelumnya, Anda dapat mencetak durasi konsumsi pesan atau memeriksa eksekusi thread berdasarkan informasi stack. Anda dapat menggunakan metode berikut untuk meningkatkan laju konsumsi pesan guna mencegah akumulasi pesan yang abnormal:

  • Tambah jumlah konsumen. Anda dapat menambah konsumen dalam suatu proses dan memastikan bahwa setiap konsumen sesuai dengan satu thread. Atau, Anda dapat menerapkan beberapa proses konsumen. Jika jumlah konsumen melebihi jumlah partisi, laju konsumsi tidak dapat ditingkatkan. Sebaliknya, konsumen tertentu menjadi idle.

  • Tambah jumlah thread konsumsi. Untuk informasi lebih lanjut, lihat bagian "Tingkatkan laju konsumsi" dari topik Praktik terbaik untuk konsumen.

Catatan
  • Anda dapat menjalankan perintah jstack untuk menanyakan informasi stack tentang thread Java.

  • Jika pesan terakumulasi dan status konsumen abnormal di Konsol ApsaraMQ for Kafka, rebalances mungkin telah terjadi. Selama rebalances, pesan tidak dikonsumsi. Dalam kasus ini, pesan terakumulasi karena sejumlah besar klien terhubung ke atau memutuskan koneksi dari ApsaraMQ for Kafka. Untuk informasi lebih lanjut, lihat Mengapa rebalances sering terjadi pada klien konsumen saya?

Referensi

  • Untuk informasi tentang jstack, lihat jstack - Stack Trace.

  • Untuk informasi tentang pertanyaan umum lainnya (FAQ), lihat FAQ.