Felsökningsguide för Apache Kafka för Event Hubs
Den här artikeln innehåller felsökningstips för problem som du kan stöta på när du använder Event Hubs för Apache Kafka.
Undantag för upptagen server
Du kan få ett undantag för Server Busy på grund av Kafka-begränsning. Med AMQP-klienter returnerar Event Hubs omedelbart ett undantag för upptagen server vid tjänstbegränsning. Det motsvarar meddelandet "försök igen senare". I Kafka fördröjs meddelanden innan de slutförs. Fördröjningslängden returneras i millisekunder som throttle_time_ms
i svaret för produktion/hämtning. I de flesta fall loggas inte dessa fördröjda begäranden som upptagna undantag för servern på Instrumentpaneler för Event Hubs. I stället ska svarets throttle_time_ms
värde användas som en indikator på att dataflödet har överskridit den etablerade kvoten.
Om trafiken är för hög har tjänsten följande beteende:
- Om fördröjningen för en begäran överskrider tidsgränsen för begäran (request.timeout.ms) returnerar Event Hubs felkod för principöverträdelse .
- Om fördröjningen för hämtningsbegäran överskrider tidsgränsen för begäran loggar Event Hubs begäran som begränsad och svarar med en tom uppsättning poster och ingen felkod.
Dedikerade kluster har inga begränsningsmekanismer. Du kan använda alla dina klusterresurser.
Inga poster har tagits emot
Du kanske ser konsumenter som inte får några poster och ständigt ombalansering. I det här scenariot får konsumenterna inga poster och balanserar ständigt om. Det finns inget undantag eller fel när det händer, men Kafka-loggarna visar att konsumenterna har fastnat när de försöker ansluta till gruppen och tilldela partitioner. Det finns några möjliga orsaker:
- Kontrollera att ditt
request.timeout.ms
värde är minst det rekommenderade värdet 60000 och att detsession.timeout.ms
är minst det rekommenderade värdet 30000. Att ha de här inställningarna för låga kan orsaka tidsgränser för konsumenter, vilket sedan orsakar ombalanseringar (vilket sedan orsakar fler timeouter, vilket orsakar mer ombalansering och så vidare) - Om konfigurationen matchar de rekommenderade värdena och du fortfarande ser en konstant ombalansering kan du öppna ett problem (se till att inkludera hela konfigurationen i problemet så att vi kan hjälpa till att felsöka)!
Problem med komprimerings-/meddelandeformatversion
Event Hubs för Kafka stöder för närvarande endast gzip
komprimeringsalgoritm. Om någon annan algoritm används ser klientprogram ett versionsfel i meddelandeformat (till exempel The message format version on the broker does not support the request.
).
Om en komprimeringsalgoritm som inte stöds behöver användas är det en giltig lösning att komprimera dina data med den specifika algoritmen innan den skickas till koordinatorerna och dekomprimera efter mottagandet. Meddelandetexten är bara en bytematris till tjänsten, så komprimering/dekomprimering på klientsidan orsakar inga problem.
UnknownServerException
Du kan få en UnknownServerException från Kafka-klientbibliotek som liknar följande exempel:
org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request
Öppna ett ärende med Microsoft-support. Loggning på felsökningsnivå och undantagstidsstämplar i UTC är användbara vid felsökning av problemet.
Andra problem
Kontrollera följande objekt om du ser problem när du använder Kafka på Event Hubs.
- Brandvägg som blockerar trafik – Kontrollera att port 9093 inte blockeras av brandväggen.
- TopicAuthorizationException – de vanligaste orsakerna till det här undantaget är:
- Ett skrivfel i niska veze i konfigurationsfilen, eller
- Försöker använda Event Hubs för Kafka på ett basic-nivånamnområde. Funktionen Event Hubs for Kafka stöds inte på den grundläggande nivån.
- Kafka-versionsmatchning – Event Hubs for Kafka Ecosystems stöder Kafka-version 1.0 och senare. Vissa program som använder Kafka version 0.10 och senare kan ibland fungera på grund av Kafka-protokollets bakåtkompatibilitet, men vi rekommenderar starkt att du inte använder gamla API-versioner. Kafka-versionerna 0.9 och tidigare stöder inte nödvändiga SASL-protokoll och kan inte ansluta till Event Hubs.
- Konstiga kodningar på AMQP-huvuden vid användning med Kafka – när händelser skickas till en händelsehubb via AMQP serialiseras alla AMQP-nyttolasthuvuden i AMQP-kodning. Kafka-konsumenter deserialiserar inte rubrikerna från AMQP. Om du vill läsa rubrikvärden avkodar du AMQP-huvudena manuellt. Du kan också undvika att använda AMQP-huvuden om du vet att du kommer att använda via Kafka-protokollet. Mer information finns i det här GitHub-problemet.
- SASL-autentisering – Det kan vara svårare än vad som möter ögat att få ditt ramverk att samarbeta med SASL-autentiseringsprotokollet som krävs av Event Hubs. Se om du kan felsöka konfigurationen med hjälp av ramverkets resurser vid SASL-autentisering.
Gränser
Apache Kafka jämfört med Event Hubs Kafka. Azure Event Hubs Kafka-gränssnitt har till största delen samma standardinställningar, egenskaper, felkoder och allmänna beteende som Apache Kafka. De instanser som dessa två uttryckligen skiljer sig åt (eller där Event Hubs inför en gräns som Kafka inte gör) visas nedan:
- Den maximala längden på egenskapen
group.id
är 256 tecken - Maxstorleken
offset.metadata.max.bytes
på är 1 024 byte - Förskjutningar begränsas till 4 anrop/sekund per partition med en maximal intern loggstorlek på 1 MB
Nästa steg
Mer information om Event Hubs och Event Hubs för Kafka finns i följande artiklar: