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

U ziet mogelijk ThrottledRequests-metrieken vanwege Kafka-throttling. Met AMQP-clients retourneert Event Hubs onmiddellijk een server bezet-uitzondering bij demping van de service. Het is gelijk aan een bericht 'Probeer het later opnieuw'. In Kafka worden binnenkomende berichten vertraagd voordat ze worden bevestigd terwijl uitgaande berichten vertraagde bezorging zien. 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 metrische gegevens vanThrottledRequests op Event Hubs-dashboards. In plaats daarvan moet de waarde van throttle_time_ms in 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 het verzoek langer is dan de time-outperiode, noteert Event Hubs het verzoek als begrensd en reageert met een lege reeks records en zonder foutcode.

Geen records ontvangen

Mogelijk ziet u dat consumenten geen records krijgen en voortdurend herschikken. In dit scenario krijgen consumenten geen records en herverdelen ze voortdurend hun balans. 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 u deze instellingen te laag instelt, kan dit leiden tot time-outs van de consumenten, wat vervolgens herverdelingen veroorzaakt (wat weer meer time-outs veroorzaakt, wat weer leidt tot meer herverdelingen, enzovoort).
  • Als uw configuratie overeenkomt met de aanbevolen waarden en u nog steeds een constante herverdeling ziet, kunt u een probleem openen (zorg ervoor dat u de volledige configuratie in het probleem opneemt, zodat we kunnen helpen bij het opsporen van fouten).

Probleem met versie van compressie-/berichtindeling

Event Hubs voor Kafka ondersteunen 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 u een niet-ondersteund compressiealgoritme moet gebruiken, is het een geldige tijdelijke oplossing om uw gegevens met dat bepaalde algoritme te comprimeren voordat u deze naar de brokers verzendt en te decomprimeren nadat de gegevens zijn ontvangen. De berichttekst is slechts een bytematrix voor de service, dus compressie/decompressie aan de clientzijde veroorzaakt geen problemen.

OnbekendeServerUitzondering

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 consumeren met Kafka - bij het verzenden van gebeurtenissen naar een Event Hub via AMQP worden eventuele AMQP-payload-headers 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.

Beperkingen

Apache Kafka versus 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 gevallen waarin deze twee expliciet van elkaar verschillen (of waar Event Hubs een limiet stelt die Kafka niet heeft) worden hier opgesomd:

  • De maximale lengte van de group.id eigenschap is 256 tekens
  • De maximale grootte van offset.metadata.max.bytes is 1.024 bytes
  • Offsetverbintenissen zijn beperkt tot 2 oproepen per seconde per partitie met een maximale interne logbestandsgrootte van 1 MB.

Volgende stappen

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