Share via


Handleiding voor het oplossen van problemen met Apache Kafka voor Event Hubs

Dit artikel bevat tips voor het oplossen van problemen die u kunt tegenkomen bij het gebruik van Event Hubs voor Apache Kafka.

Server bezet uitzondering

Mogelijk ontvangt u server bezet-uitzondering vanwege kafka-beperking. Met AMQP-clients retourneert Event Hubs onmiddellijk een server bezet uitzondering bij servicebeperking. Het is gelijk aan een bericht 'Probeer het later opnieuw'. In Kafka worden berichten vertraagd voordat ze worden voltooid. De vertragingslengte wordt geretourneerd in milliseconden zoals throttle_time_ms in het antwoord voor produceren/ophalen. In de meeste gevallen worden deze vertraagde aanvragen niet geregistreerd als server bezet-uitzonderingen op Event Hubs-dashboards. In plaats daarvan moet de waarde van throttle_time_ms het antwoord worden gebruikt als indicator dat de doorvoer het ingerichte quotum heeft overschreden.

Als het verkeer overmatig is, heeft de service het volgende gedrag:

  • Als de vertraging van een aanvraag de time-out voor aanvragen overschrijdt (request.timeout.ms), retourneert Event Hubs de foutcode Beleidsschending .
  • Als de vertraging van de ophaalaanvraag de time-out van de aanvraag overschrijdt, registreert Event Hubs de aanvraag als beperkt en reageert met een lege set records en geen foutcode.

Toegewezen clusters hebben geen beperkingsmechanismen. U kunt al uw clusterresources gebruiken.

Geen records ontvangen

Mogelijk ziet u dat consumenten geen records krijgen en voortdurend opnieuw verdelen. In dit scenario krijgen consumenten geen records en worden ze voortdurend opnieuw in balans gebracht. Er is geen uitzondering of fout wanneer dit gebeurt, maar in de Kafka-logboeken wordt aangegeven dat de gebruikers vastlopen bij het opnieuw deelnemen aan de groep en partities toewijzen. Er zijn enkele mogelijke oorzaken:

  • Zorg ervoor dat uw request.timeout.ms ten minste de aanbevolen waarde van 60000 is en dat u 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, waardoor er vervolgens meer time-outs ontstaan, waardoor er meer balans ontstaat, enzovoort)
  • Als uw configuratie overeenkomt met die aanbevolen waarden en u nog steeds een constante herverdeling ziet, kunt u een probleem openen (zorg ervoor dat u uw volledige configuratie in het probleem opneemt, zodat we fouten kunnen opsporen)!

Probleem met versie van compressie-/berichtindeling

Event Hubs voor Kafka ondersteunt momenteel alleen gzip compressiealgoritmen. Als er een ander algoritme wordt gebruikt, zien clienttoepassingen een fout in de berichtindeling (bijvoorbeeld The message format version on the broker does not support the request.).

Als een niet-ondersteund compressiealgoritme moet worden gebruikt, comprimeert u uw gegevens met dat specifieke algoritme voordat u het naar de brokers verzendt en decomprimeert nadat het ontvangen een geldige tijdelijke oplossing is. De berichttekst is slechts een bytematrix voor de service, dus compressie/decompressie aan de clientzijde veroorzaakt geen problemen.

UnknownServerException

Mogelijk ontvangt u een UnknownServerException van Kafka-clientbibliotheken die vergelijkbaar zijn met het volgende voorbeeld:

org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request

Open een ticket met Microsoft-ondersteuning. Logboekregistratie op foutopsporingsniveau en tijdstempels voor uitzonderingen in UTC zijn handig bij het opsporen van fouten bij het probleem.

Overige problemen

Controleer de volgende items als u problemen ziet bij het gebruik van Kafka in Event Hubs.

  • Firewall blokkeert verkeer : zorg ervoor dat poort 9093 niet wordt geblokkeerd door uw firewall.
  • TopicAuthorizationException - De meest voorkomende oorzaken van deze uitzondering zijn:
    • Een typefout in de verbindingsreeks in uw configuratiebestand, of
    • Event Hubs voor Kafka gebruiken in een Basic-laagnaamruimte. De functie Event Hubs voor Kafka wordt niet ondersteund in de basic-laag.
  • Kafka-versie komt niet overeen : Event Hubs voor Kafka Ecosystemen ondersteunt Kafka-versies 1.0 en hoger. Sommige toepassingen die Kafka versie 0.10 en hoger gebruiken, kunnen af en toe werken vanwege de compatibiliteit met eerdere versies van het Kafka-protocol, maar we raden u ten zeerste aan om oude API-versies te gebruiken. Kafka-versies 0.9 en eerder bieden geen ondersteuning voor de vereiste SASL-protocollen en kunnen geen verbinding maken met Event Hubs.
  • Vreemde coderingen op AMQP-headers bij gebruik met Kafka : bij het verzenden van gebeurtenissen naar een Event Hub via AMQP worden eventuele AMQP-nettoladingheaders geserialiseerd in AMQP-codering. Kafka-consumenten deserialiseren de headers van AMQP niet. Als u headerwaarden wilt lezen, moet u de AMQP-headers handmatig decoderen. U kunt ook voorkomen dat AMQP-headers worden gebruikt als u weet dat u het gebruikt via het Kafka-protocol. Zie dit GitHub-probleem voor meer informatie.
  • SASL-verificatie : het verkrijgen van uw framework om samen te werken met het SASL-verificatieprotocol dat door Event Hubs is vereist, kan moeilijker zijn dan in het oog valt. Kijk of u problemen met de configuratie kunt oplossen met behulp van de resources van uw framework voor SASL-verificatie.

Limieten

Apache Kafka vs. Event Hubs Kafka. De Kafka-interface van Azure Event Hubs heeft voor het grootste deel dezelfde standaardwaarden, eigenschappen, foutcodes en algemeen gedrag als Apache Kafka. De exemplaren die deze twee expliciet verschillen (of waar Event Hubs een limiet opleggen die Kafka niet doet), worden hieronder vermeld:

  • De maximale lengte van de group.id eigenschap is 256 tekens
  • De maximale grootte is offset.metadata.max.bytes 1024 bytes
  • Offsetdoorvoeringen worden beperkt tot 4 aanroepen/seconde per partitie met een maximale interne logboekgrootte van 1 MB

Volgende stappen

Zie de volgende artikelen voor meer informatie over Event Hubs en Event Hubs voor Kafka: