Dela via


Rekommenderade konfigurationer för Apache Kafka-klienter

Här är de rekommenderade konfigurationerna för att använda Azure Event Hubs från Apache Kafka-klientprogram.

Egenskaper för Java-klientkonfiguration

Producent- och konsumentkonfigurationer

Property Rekommenderade värden Tillåtet intervall Kommentar
metadata.max.age.ms 180000 (ungefärlig) < 240000 Kan sänkas för att hämta metadataändringar tidigare.
connections.max.idle.ms 180000 < 240000 Azure stänger inkommande TCP-inaktiva > 240 000 ms, vilket kan resultera i att döda anslutningar skickas (visas som utgångna batchar på grund av tidsgränsen för sändning).

Endast producentkonfigurationer

Producentkonfigurationer finns här.

Property Rekommenderade värden Tillåtet intervall Kommentar
max.request.size 1 000 000 < 1046528 Tjänsten stänger anslutningar om begäranden som är större än 1 046 528 byte skickas. Det här värdet måste ändras och orsakar problem i scenarier med högt dataflöde.
retries > 0 Du kan behöva öka delivery.timeout.ms värde i dokumentationen.
request.timeout.ms 30000 .. 60000 > 20000 Event Hubs kommer internt att vara minst 20 000 ms. Även om begäranden med lägre tidsgränsvärden accepteras garanteras inte klientbeteendet..

Kontrollera att din request.timeout.ms är minst det rekommenderade värdet 60000 och att din session.timeout.ms är minst det rekommenderade värdet 30000. Om de här inställningarna är för låga kan det orsaka tidsgränser för konsumenterna, vilket sedan orsakar ombalanseringar (vilket sedan orsakar fler timeouter, vilket orsakar mer ombalansering och så vidare).

metadata.max.idle.ms 180000 > 5000 Styr hur länge producenten cachelagrade metadata för ett ämne som är inaktivt. Om den förflutna tiden sedan ett ämne senast producerades överskrider varaktigheten för inaktiva metadata glöms ämnets metadata bort och nästa åtkomst till det framtvingar en begäran om metadatahämtning.
linger.ms > 0 För scenarier med högt dataflöde bör värdet vara lika med det högsta toleransvärdet för att dra nytta av batchbearbetning.
delivery.timeout.ms Ange enligt formeln (request.timeout.ms + linger.ms) * . retries
compression.type none Komprimering stöds för närvarande inte..

Endast konsumentkonfigurationer

Konsumentkonfigurationer finns här.

Property Rekommenderade värden Tillåtet intervall Kommentar
heartbeat.interval.ms 3000 3000 är standardvärdet och bör inte ändras.
session.timeout.ms 30000 6000 .. 300 000 Börja med 30000, öka om du ser frekvent ombalansering på grund av missade pulsslag.

Kontrollera att din request.timeout.ms är minst det rekommenderade värdet 60000 och att din session.timeout.ms är minst det rekommenderade värdet 30000. Om de här inställningarna är för låga kan det orsaka tidsgränser för konsumenterna, vilket sedan orsakar ombalanseringar (vilket sedan orsakar fler timeouter, vilket orsakar mer ombalansering och så vidare).

max.poll.interval.ms 300000 (standard) >session.timeout.ms Används för ombalanseringstimeout, så detta bör inte anges för lågt. Måste vara större än session.timeout.ms.

librdkafka-konfigurationsegenskaper

librdkafka Huvudkonfigurationsfilen (länk) innehåller utökade beskrivningar för egenskaperna nedan.

Producent- och konsumentkonfigurationer

Property Rekommenderade värden Tillåtet intervall Kommentar
socket.keepalive.enable true Nödvändigt om anslutningen förväntas vara inaktiv. Azure stänger inkommande TCP-inaktiva > 240 000 ms.
metadata.max.age.ms ~ 180000 < 240000 Kan sänkas för att hämta metadataändringar tidigare.

Endast producentkonfigurationer

Property Rekommenderade värden Tillåtet intervall Kommentar
retries > 0 Standardvärdet är 2147483647.
request.timeout.ms 30000 .. 60000 > 20000 Event Hubs kommer internt att vara minst 20 000 ms. librdkafka standardvärdet är 5 000, vilket kan vara problematiskt. Även om begäranden med lägre tidsgränsvärden accepteras garanteras inte klientbeteendet.
partitioner consistent_random Se dokumentationen om librdkafka consistent_random är standard och bäst. Tomma och null-nycklar hanteras helst i de flesta fall.
compression.codec none Komprimering stöds för närvarande inte.

Endast konsumentkonfigurationer

Property Rekommenderade värden Tillåtet intervall Kommentar
heartbeat.interval.ms 3000 3000 är standardvärdet och bör inte ändras.
session.timeout.ms 30000 6000 .. 300 000 Börja med 30000, öka om du ser frekvent ombalansering på grund av missade pulsslag.
max.poll.interval.ms 300000 (standard) >session.timeout.ms Används för ombalanseringstimeout, så detta bör inte anges för lågt. Måste vara större än session.timeout.ms.

Ytterligare kommentarer

Kontrollera följande tabell med vanliga konfigurationsrelaterade felscenarier.

Symtom Problem Lösning
Förskjutning av incheckningsfel på grund av ombalansering Din konsument väntar för länge mellan anrop till poll() och tjänsten sparkar ut konsumenten ur gruppen. Du har flera alternativ:
  • Öka tidsgränsen för avsökningsbearbetning (max.poll.interval.ms)
  • Minska meddelandebatchstorleken för att påskynda bearbetningen
  • Förbättra bearbetningsparallelliseringen för att undvika blockering av consumer.poll()
Att tillämpa någon kombination av de tre är sannolikt klokast.
Nätverksfel vid hög produktion av dataflöde Använder du Java-klienten + standardvärdet max.request.size? Dina begäranden kan vara för stora. Se Java-konfigurationer ovan.

Nästa steg

Se Azure-prenumerations - och tjänstgränser, kvoter och begränsningar för kvoter och gränser för alla Azure-tjänster.