Bagikan melalui


Konfigurasi yang disarankan untuk klien Apache Kafka

Berikut adalah konfigurasi yang disarankan untuk menggunakan Azure Event Hubs dari aplikasi klien Apache Kafka.

Properti konfigurasi klien Java

Konfigurasi produsen dan konsumen

Properti Nilai yang disarankan Rentang yang diizinkan Catatan
metadata.max.age.ms 180000 (perkiraan) < 240000 Dapat diturunkan untuk mengambil perubahan metadata lebih cepat.
connections.max.idle.ms 180000 < 240000 Azure menutup TCP masuk yang diam selama > 240.000 md, yang dapat mengakibatkan pengiriman pada koneksi yang mati (ditampilkan sebagai batch kedaluwarsa karena waktu pengiriman habis).

Konfigurasi khusus produsen

Konfigurasi produsen dapat ditemukan di sini.

Properti Nilai yang Disarankan Rentang yang Diizinkan Catatan
max.request.size 1000000 < 1046528 Layanan akan menutup koneksi jika permintaan lebih besar dari 1.046.528 byte dikirim. Nilai ini harus diubah dan akan menyebabkan masalah dalam skenario hasil throughput tinggi.
retries > 0 Mungkin memerlukan peningkatan nilai delivery.timeout.ms, lihat dokumentasi.
request.timeout.ms 30000 .. 60000 > 20000 Azure Event Hubs secara internal akan menjadi default minimal 20.000 md. Meskipun permintaan dengan nilai batas waktu yang lebih rendah diterima, perilaku klien tidak dijamin..

Pastikan request.timeout.ms Anda setidaknya bernilai 60000 seperti yang disarankan dan session.timeout.ms Anda setidaknya bernilai 30000 seperti yang disarankan. Memiliki pengaturan ini terlalu rendah dapat menyebabkan konsumen kehabisan waktu, yang kemudian menyebabkan penyeimbangan ulang (yang kemudian menyebabkan lebih banyak batas waktu, yang menyebabkan lebih banyak penyeimbangan ulang, dan seterusnya).

metadata.max.idle.ms 180000 > 5000 Mengontrol berapa lama produser akan menyimpan metadata untuk topik yang tidak ada aktivitas. Jika waktu yang berlalu sejak topik terakhir diproduksi melebihi durasi tidak ada aktivitas metadata, maka metadata topik akan dilupakan dan akses berikutnya ke topik tersebut akan memaksa permintaan pengambilan metadata.
linger.ms > 0 Untuk skenario throughput tinggi, nilai aktif harus sama dengan nilai tertinggi yang dapat ditoleransi untuk memanfaatkan pembuatan batch.
delivery.timeout.ms Atur sesuai dengan rumus (request.timeout.ms + linger.ms) * retries.
compression.type none Pemadatan saat ini tidak didukung..

Konfigurasi khusus konsumen

Konfigurasi konsumen dapat ditemukan di sini.

Properti Nilai yang Disarankan Rentang yang Diizinkan Catatan
heartbeat.interval.ms 3000 3000 adalah nilai defaultnya dan tidak boleh diubah.
session.timeout.ms 30000 6000 .. 300000 Mulailah dengan 30000, tingkatkan jika sering melihat penyeimbangan ulang karena heartbeat yang terlewatkan.

Pastikan request.timeout.ms Anda setidaknya bernilai 60000 seperti yang disarankan dan session.timeout.ms Anda setidaknya bernilai 30000 seperti yang disarankan. Memiliki pengaturan ini terlalu rendah dapat menyebabkan konsumen kehabisan waktu, yang kemudian menyebabkan penyeimbangan ulang (yang kemudian menyebabkan lebih banyak batas waktu, yang menyebabkan lebih banyak penyeimbangan ulang, dan seterusnya).

max.poll.interval.ms 300000 (default) >session.timeout.ms Digunakan untuk batas waktu penyeimbangan ulang, jadi ini tidak boleh diatur terlalu rendah. Harus lebih besar dari session.timeout.ms.

properti konfigurasi librdkafka

File konfigurasi utama librdkafka (tautan) berisi tambahan untuk properti di bawah ini.

Konfigurasi produsen dan konsumen

Properti Nilai yang Disarankan Rentang yang Diizinkan Catatan
socket.keepalive.enable benar Diperlukan jika koneksi diharapkan tidak ada aktivitas. Azure akan menutup TCP masuk yang diam > 240.000 md.
metadata.max.age.ms ~ 180000 < 240000 Dapat diturunkan untuk mengambil perubahan metadata lebih cepat.

Konfigurasi khusus produsen

Properti Nilai yang Disarankan Rentang yang Diizinkan Catatan
retries 2 Default-nya adalah 2147483647.
request.timeout.ms 30000 .. 60000 > 20000 Azure Event Hubs secara internal akan menjadi default minimal 20.000 md. Nilai default librdkafka adalah 5000, yang bisa menimbulkan masalah. Meskipun permintaan dengan nilai batas waktu yang lebih rendah diterima, perilaku klien tidak dijamin.
partitioner consistent_random Lihat dokumentasi librdkafka consistent_random adalah defaultnya dan yang terbaik. Kunci null dan kosong ditangani secara ideal untuk sebagian besar kasus.
compression.codec none Pemadatan saat ini tidak didukung.

Konfigurasi khusus konsumen

Properti Nilai yang Disarankan Rentang yang Diizinkan Catatan
heartbeat.interval.ms 3000 3000 adalah nilai defaultnya dan tidak boleh diubah.
session.timeout.ms 30000 6000 .. 300000 Mulailah dengan 30000, tingkatkan jika sering melihat penyeimbangan ulang karena heartbeat yang terlewatkan.
max.poll.interval.ms 300000 (default) >session.timeout.ms Digunakan untuk batas waktu penyeimbangan ulang, jadi ini tidak boleh diatur terlalu rendah. Harus lebih besar dari session.timeout.ms.

Catatan lebih lanjut

Periksa tabel skenario kesalahan terkait konfigurasi umum berikut ini.

Gejala Masalah Solusi
Offset melakukan kegagalan karena penyeimbangan ulang Konsumen Anda menunggu terlalu lama di antara panggilan ke poll() dan layanan mengeluarkan konsumen dari grup. Anda memiliki beberapa opsi:
  • Meningkatkan batas waktu pemrosesan polling (max.poll.interval.ms)
  • Mengurangi ukuran batch pesan untuk mempercepat pemrosesan
  • Meningkatkan paralelisasi pemrosesan untuk menghindari pemblokiran consumer.poll()
Menerapkan beberapa kombinasi dari ketiganya mungkin menjadi opsi yang paling bijaksana.
Pengecualian jaringan pada throughput hasil tinggi Apakah Anda menggunakan klien Java + max.request.size default? Permintaan Anda mungkin terlalu besar. Lihat konfigurasi Java di atas.

Langkah berikutnya

Lihat Batas, kuota, dan batasan langganan dan layanan Azure untuk mengetahui kuota dan batasan semua layanan Azure.