Delen via


Aanbevolen configuraties voor Apache Kafka-clients

Hier volgen de aanbevolen configuraties voor het gebruik van Azure Event Hubs vanuit Apache Kafka-clienttoepassingen.

Eigenschappen van Java-clientconfiguratie

Configuraties voor producenten en consumenten

Eigenschappen Aanbevolen waarden Toegestaan bereik Opmerkingen
metadata.max.age.ms 180000 (geschat) < 240000 Kan sneller worden verlaagd om wijzigingen in metagegevens op te halen.
connections.max.idle.ms 180000 < 240000 Azure sluit binnenkomende Transmission Control Protocol (TCP) inactief > 240.000 ms, wat kan leiden tot het verzenden van dode verbindingen (weergegeven als verlopen batches vanwege een time-out voor verzenden).

Alleen producentconfiguraties

Hier vindt u producentconfiguraties.

Eigenschappen Aanbevolen waarden Toegestaan bereik Opmerkingen
max.request.size 1000000 < 1046528 De service sluit verbindingen als aanvragen groter zijn dan 1.046.528 bytes worden verzonden. Deze waarde moet worden gewijzigd en veroorzaakt problemen in productiescenario's met hoge doorvoer.
retries > 0 Mogelijk moet u delivery.timeout.ms waarde verhogen. Raadpleeg de documentatie.
request.timeout.ms 30000 .. 60000 > 20000 Event Hubs is intern standaard ingesteld op minimaal 20.000 ms. Hoewel aanvragen met lagere time-outwaarden worden geaccepteerd, wordt het clientgedrag niet gegarandeerd.

Zorg ervoor dat uw request.timeout.ms ten minste de aanbevolen waarde van 60000 is en dat uw session.timeout.ms ten minste de aanbevolen waarde van 30000 is. Als deze instellingen te laag zijn, kunnen time-outs voor consumenten ontstaan, waardoor er dan meer time-outs ontstaan, waardoor er meer balans ontstaat, enzovoort.

metadata.max.idle.ms 180000 > 5000 Hiermee bepaalt u hoelang de producent metagegevens opgeslagen in de cache van een onderwerp dat niet actief is. Als de verstreken tijd sinds een onderwerp voor het laatst is geproduceerd, de duur van de niet-actieve metagegevens overschrijdt, worden de metagegevens van het onderwerp vergeten en wordt de volgende toegang ertoe gedwongen een aanvraag voor het ophalen van metagegevens af te dwingen.
linger.ms > 0 Voor scenario's met hoge doorvoer moet de lingerwaarde gelijk zijn aan de hoogste toelaatbare waarde om te profiteren van batchverwerking.
delivery.timeout.ms Instellen op basis van de formule (request.timeout.ms + linger.ms) * . retries
compression.type uncompressed, gzip Momenteel wordt alleen gzip-compressie ondersteund.

Alleen consumentenconfiguraties

Hier vindt u consumentenconfiguraties.

Eigenschappen Aanbevolen waarden Toegestaan bereik Opmerkingen
heartbeat.interval.ms 3000 3000 is de standaardwaarde en mag niet worden gewijzigd.
session.timeout.ms 30.000 6000 .. 300000 Begin met 30000, verhoog of frequente herverdeling wordt weergegeven vanwege gemiste heartbeats.

Zorg ervoor dat uw request.timeout.ms ten minste de aanbevolen waarde van 60000 is en dat uw session.timeout.ms ten minste de aanbevolen waarde van 30000 is. Als deze instellingen te laag zijn, kunnen time-outs voor consumenten ontstaan, waardoor er dan meer time-outs ontstaan, waardoor er meer balans ontstaat, enzovoort.

max.poll.interval.ms 300000 (standaard) >session.timeout.ms Wordt gebruikt voor een time-out voor opnieuw verdelen, dus deze mag niet te laag worden ingesteld. Moet groter zijn dan session.timeout.ms.

eigenschappen van librdkaka-configuratie

Het hoofdconfiguratiebestand librdkafka (koppeling) bevat uitgebreide beschrijvingen voor de eigenschappen die in de volgende secties worden beschreven.

Configuraties voor producenten en consumenten

Eigenschappen Aanbevolen waarden Toegestaan bereik Opmerkingen
socket.keepalive.enable true Noodzakelijk als de verbinding naar verwachting niet actief is. Azure sluit binnenkomende TCP > 240.000 ms.
metadata.max.age.ms ~ 180000 < 240000 Kan sneller worden verlaagd om wijzigingen in metagegevens op te halen.

Alleen producentconfiguraties

Eigenschappen Aanbevolen waarden Toegestaan bereik Opmerkingen
retries > 0 De standaardwaarde is 2147483647.
request.timeout.ms 30000 .. 60000 > 20000 Event Hubs is intern standaard ingesteld op minimaal 20.000 ms. librdkafka de standaardwaarde is 5000, wat problematisch kan zijn. Hoewel aanvragen met lagere time-outwaarden worden geaccepteerd, wordt het clientgedrag niet gegarandeerd.
partitioner consistent_random Raadpleeg de documentatie voor librdkaka consistent_random is standaard en beste. Lege en null-sleutels worden in de meeste gevallen in het ideale geval verwerkt.
compression.codec none, gzip Momenteel wordt alleen gzip-compressie ondersteund.

Alleen consumentenconfiguraties

Eigenschappen Aanbevolen waarden Toegestaan bereik Opmerkingen
heartbeat.interval.ms 3000 3000 is de standaardwaarde en mag niet worden gewijzigd.
session.timeout.ms 30.000 6000 .. 300000 Begin met 30000, verhoog of frequente herverdeling wordt weergegeven vanwege gemiste heartbeats.
max.poll.interval.ms 300000 (standaard) >session.timeout.ms Wordt gebruikt voor een time-out voor opnieuw verdelen, dus deze mag niet te laag worden ingesteld. Moet groter zijn dan session.timeout.ms.

Verdere opmerkingen

Controleer de volgende tabel met veelvoorkomende configuratiefouten.

Symptomen Probleem Oplossing
Fouten bij het doorvoeren van verschuivingen vanwege herverdeling Uw consument wacht te lang tussen aanroepen naar poll() en de service trapt de consument uit de groep. U hebt verschillende opties:
  • Time-out voor pollverwerking verhogen (max.poll.interval.ms)
  • De batchgrootte van berichten verkleinen om de verwerking te versnellen
  • Parallelle verwerking verbeteren om te voorkomen dat consumer.poll() wordt geblokkeerd
Het toepassen van een combinatie van de drie is waarschijnlijk het slimst.
Netwerk-uitzonderingen bij hoge productiedoorvoer Als u een Java-client gebruikt en standaard max.request.size gebruikt, zijn uw aanvragen mogelijk te groot. Zie Java-configuraties die eerder zijn vermeld.

Volgende stappen

Zie Azure-abonnements- en servicelimieten, quota en beperkingen voor quota en limieten van alle Azure-services.