Share via


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 server upptagen vid tjänstbegränsning. Det motsvarar ett "försök igen senare"-meddelande. 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 att producera/hämta. I de flesta fall loggas inte dessa fördröjda begäranden som undantag för server upptagen på Event Hubs-instrumentpaneler. I stället bör 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 hämtningsbegärans fördröjning ö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 kan se att konsumenter inte får några poster och ständigt balanserar om. I det här scenariot får konsumenterna inga poster och balanserar ständigt om. Det finns inget undantag eller fel när det inträffar, men Kafka-loggarna visar att användarna har fastnat när de försöker ansluta till gruppen igen 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 det 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)
  • 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

Kafka stöder komprimering och Event Hubs för Kafka gör det för närvarande inte. Fel som nämner en meddelandeformatversion (till exempel The message format version on the broker does not support the request.) orsakas när en klient försöker skicka komprimerade Kafka-meddelanden till våra asynkrona meddelandeköer.

Om komprimerade data krävs är det en giltig lösning att komprimera dina data innan de skickas till asynkrona meddelandeköer och dekomprimera efter mottagandet. Meddelandetexten är bara en bytematris för tjänsten, så komprimering/dekomprimering på klientsidan orsakar inga problem.

UnknownServerException

Du kan få ett 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 Microsofts 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 anslutningssträngen i konfigurationsfilen, eller
    • Försöker använda Event Hubs för Kafka på en Basic-nivånamnrymd. Funktionen Event Hubs for Kafka stöds inte på den grundläggande nivån.
  • Matchningsfel för Kafka-version – 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-huvuden 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å ramverket att samarbeta med SASL-autentiseringsprotokollet som krävs av Event Hubs. Se om du kan felsöka konfigurationen med hjälp av ramverkets resurser för 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 har) visas nedan:

  • Den maximala längden på group.id egenskapen ä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: