Delen via


Aanbevolen configuraties voor Apache Kafka-clients

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

Eigenschappen van java-clientconfiguratie

Producent- en consumentenconfiguraties

Eigenschap Aanbevolen waarden Toegestaan bereik Notities
metadata.max.age.ms 180000 (bij benadering) < 240000 Kan worden verlaagd om wijzigingen in metagegevens sneller op te pikken.
connections.max.idle.ms 180000 < 240000 Azure sluit binnenkomende TCP-inactiviteit > 240.000 ms, wat kan leiden tot het verzenden van onbestelbare verbindingen (weergegeven als verlopen batches vanwege een time-out voor verzenden).

Alleen producentconfiguraties

Producentconfiguraties vindt u hier.

Eigenschap Aanbevolen waarden Toegestaan bereik Notities
max.request.size 1000000 < 1046528 De service sluit verbindingen als aanvragen groter dan 1.046.528 bytes worden verzonden. Deze waarde moet worden gewijzigd en veroorzaakt problemen in productiescenario's met hoge doorvoer.
retries > 0 Mogelijk is het verhogen van delivery.timeout.ms waarde vereist, zie de documentatie.
request.timeout.ms 30000 .. 60000 > 20000 Event Hubs wordt intern standaard ingesteld op minimaal 20.000 ms. Hoewel aanvragen met lagere time-outwaarden worden geaccepteerd, wordt 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, kan dit leiden tot time-outs voor consumenten, die vervolgens herverdelingen veroorzaken (die vervolgens meer time-outs veroorzaken, waardoor meer herverdeling ontstaat, enzovoort).

metadata.max.idle.ms 180000 > 5000 Hiermee bepaalt u hoe lang de producent metagegevens in de cache opslaat voor 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 bij de volgende toegang een aanvraag voor het ophalen van metagegevens afgedwongen.
linger.ms > 0 Voor scenario's met hoge doorvoer moet de linger-waarde gelijk zijn aan de hoogste toegestane waarde om te profiteren van batchverwerking.
delivery.timeout.ms Stel in volgens de formule (request.timeout.ms + linger.ms) * retries.
compression.type none Compressie wordt momenteel niet ondersteund.

Alleen consumentenconfiguraties

Hier vindt u configuraties voor consumenten.

Eigenschap Aanbevolen waarden Toegestaan bereik Notities
heartbeat.interval.ms 3000 3000 is de standaardwaarde en mag niet worden gewijzigd.
session.timeout.ms 30.000 6000 .. 300000 Begin met 30000, verhoog als u frequente herverdeling ziet vanwege gemiste heartbeats.

Zorg ervoor dat uw request.timeout.ms ten minste de aanbevolen waarde van 60000 heeft en dat uw session.timeout.ms ten minste de aanbevolen waarde van 30000 is. Als deze instellingen te laag zijn, kan dit leiden tot time-outs voor consumenten, die vervolgens herverdelingen veroorzaken (die vervolgens meer time-outs veroorzaken, waardoor meer herverdeling ontstaat, enzovoort).

max.poll.interval.ms 300000 (standaard) >session.timeout.ms Wordt gebruikt voor time-out voor herbalanceren, dus dit moet niet te laag worden ingesteld. Moet groter zijn dan session.timeout.ms.

librdkafka-configuratie-eigenschappen

Het hoofdconfiguratiebestand librdkafka (koppeling) bevat uitgebreide beschrijvingen voor de onderstaande eigenschappen.

Producent- en consumentenconfiguraties

Eigenschap Aanbevolen waarden Toegestaan bereik Notities
socket.keepalive.enable true Dit is nodig als de verbinding naar verwachting niet actief is. Azure sluit binnenkomende TCP-inactiviteit > 240.000 ms.
metadata.max.age.ms ~ 180000 < 240000 Kan worden verlaagd om wijzigingen in metagegevens sneller op te pikken.

Alleen producentconfiguraties

Eigenschap Aanbevolen waarden Toegestaan bereik Notities
retries 2 De standaardwaarde is 2147483647.
request.timeout.ms 30000 .. 60000 > 20000 Event Hubs wordt 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 clientgedrag niet gegarandeerd.
partitioner consistent_random Zie de librdkafka-documentatie consistent_random is standaard en beste. In de meeste gevallen worden lege en null-sleutels in het ideale geval verwerkt.
compression.codec none Compressie wordt momenteel niet ondersteund.

Alleen consumentenconfiguraties

Eigenschap Aanbevolen waarden Toegestaan bereik Notities
heartbeat.interval.ms 3000 3000 is de standaardwaarde en mag niet worden gewijzigd.
session.timeout.ms 30.000 6000 .. 300000 Begin met 30000, verhoog als u frequente herverdeling ziet vanwege gemiste heartbeats.
max.poll.interval.ms 300000 (standaard) >session.timeout.ms Wordt gebruikt voor time-out voor herbalanceren, dus dit moet niet te laag worden ingesteld. Moet groter zijn dan session.timeout.ms.

Verdere opmerkingen

Bekijk de volgende tabel met veelvoorkomende configuratiegerelateerde foutscenario's.

Symptomen Probleem Oplossing
Fouten bij doorvoeren verschuiven vanwege herverdeling Uw consument wacht te lang tussen aanroepen voor poll() en de service schopt de consument uit de groep. U hebt verschillende mogelijkheden:
  • Time-out voor pollverwerking verhogen (max.poll.interval.ms)
  • De batchgrootte van het bericht 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 verstandigst.
Netwerk-uitzonderingen bij hoge productiedoorvoer Gebruikt u java-client + standaard max.request.size? Uw aanvragen zijn mogelijk te groot. Zie Java-configuraties hierboven.

Volgende stappen

Zie Limieten, quota en beperkingen voor Azure-abonnementen en -services voor quota en limieten van alle Azure-services.