Przewodnik rozwiązywania problemów z platformą Apache Kafka dla usługi Event Hubs
Ten artykuł zawiera porady dotyczące rozwiązywania problemów, które mogą wystąpić podczas korzystania z usługi Event Hubs dla platformy Apache Kafka.
Wyjątek zajęty serwera
Może zostać wyświetlony wyjątek Zajęty serwer z powodu ograniczania przepustowości platformy Kafka. W przypadku klientów amQP usługa Event Hubs natychmiast zwraca wyjątek zajęty serwera po ograniczaniu usługi. Jest to odpowiednik komunikatu "spróbuj ponownie później". Na platformie Kafka komunikaty są opóźnione przed ukończeniem. Długość opóźnienia jest zwracana w milisekundach, tak jak throttle_time_ms
w odpowiedzi produkcji/pobierania. W większości przypadków te opóźnione żądania nie są rejestrowane jako wyjątki zajętości serwera na pulpitach nawigacyjnych usługi Event Hubs. Zamiast tego wartość odpowiedzi throttle_time_ms
powinna być używana jako wskaźnik, że przepływność przekroczyła aprowizowany limit przydziału.
Jeśli ruch jest nadmierny, usługa ma następujące zachowanie:
- Jeśli opóźnienie żądania generuje przekroczenie limitu czasu żądania (request.timeout.ms), usługa Event Hubs zwraca kod błędu naruszenia zasad.
- Jeśli opóźnienie żądania pobierania przekracza limit czasu żądania, usługa Event Hubs rejestruje żądanie jako ograniczone i odpowiada z pustym zestawem rekordów i bez kodu błędu.
Klastry dedykowane nie mają mechanizmów ograniczania przepustowości. Możesz bezpłatnie korzystać ze wszystkich zasobów klastra.
Nie odebrano żadnych rekordów
Użytkownicy mogą nie uzyskać żadnych rekordów i stale je równoważyć. W tym scenariuszu użytkownicy nie otrzymują żadnych rekordów i stale się równoważą. W takim przypadku nie ma wyjątku ani błędu, ale dzienniki platformy Kafka będą pokazywać, że konsumenci zablokowali próbę ponownego dołączania do grupy i przypisywania partycji. Istnieje kilka możliwych przyczyn:
- Upewnij się, że
request.timeout.ms
wartość jest co najmniej zalecana 60000, a wartośćsession.timeout.ms
jest co najmniej zalecana 30000. Jeśli te ustawienia są zbyt niskie, mogą powodować przekroczenia limitu czasu użytkownika, co powoduje ponowne równoważenie (co powoduje większe przekroczenie limitu czasu, co powoduje ponowne równoważenie itd.) - Jeśli konfiguracja jest zgodna z tymi zalecanymi wartościami i nadal widzisz ciągłe ponowne równoważenie, możesz otworzyć problem (pamiętaj, aby uwzględnić całą konfigurację w problemie, aby ułatwić debugowanie)!
Problem z wersją formatu kompresji/komunikatu
Usługa Event Hubs dla platformy Kafka obecnie obsługuje tylko gzip
algorytm kompresji. Jeśli jest używany inny algorytm, aplikacje klienckie zobaczą błąd wersji w formacie komunikatu (na przykład The message format version on the broker does not support the request.
).
Jeśli należy użyć nieobsługiwanego algorytmu kompresji, kompresowanie danych za pomocą tego konkretnego algorytmu przed wysłaniem go do brokerów i dekompresowanie po otrzymaniu jest prawidłowym obejściem. Treść komunikatu jest tylko tablicą bajtów w usłudze, więc kompresja/dekompresja po stronie klienta nie spowoduje żadnych problemów.
UnknownServerException
Element UnknownServerException może zostać wyświetlony z bibliotek klienckich platformy Kafka podobny do poniższego przykładu:
org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request
Otwórz bilet z pomocą techniczną firmy Microsoft. Rejestrowanie na poziomie debugowania i znaczniki czasu wyjątków w formacie UTC są przydatne podczas debugowania problemu.
Inne problemy
Sprawdź następujące elementy, jeśli występują problemy podczas korzystania z platformy Kafka w usłudze Event Hubs.
- Zapora blokuje ruch — upewnij się, że port 9093 nie jest blokowany przez zaporę.
- TopicAuthorizationException — najczęstsze przyczyny tego wyjątku to:
- Literówka w parametry połączenia w pliku konfiguracji lub
- Próba użycia usługi Event Hubs dla platformy Kafka w przestrzeni nazw warstwy Podstawowa. Funkcja usługi Event Hubs dla platformy Kafka nie jest obsługiwana w warstwie Podstawowa.
- Niezgodność wersji platformy Kafka — usługa Event Hubs dla ekosystemów platformy Kafka obsługuje platformę Kafka w wersji 1.0 lub nowszej. Niektóre aplikacje korzystające z platformy Kafka w wersji 0.10 lub nowszej mogą czasami działać ze względu na zgodność z poprzednimi wersjami protokołu Kafka, ale zdecydowanie zalecamy używanie starych wersji interfejsu API. Platforma Kafka w wersji 0.9 i starszych nie obsługuje wymaganych protokołów SASL i nie może nawiązać połączenia z usługą Event Hubs.
- Dziwne kodowania w nagłówkach AMQP podczas korzystania z platformy Kafka — podczas wysyłania zdarzeń do centrum zdarzeń za pośrednictwem protokołu AMQP wszystkie nagłówki ładunku AMQP są serializowane w kodowaniu AMQP. Konsumenci platformy Kafka nie deserializować nagłówków z protokołu AMQP. Aby odczytać wartości nagłówka, ręcznie zdekoduj nagłówki AMQP. Alternatywnie możesz uniknąć używania nagłówków AMQP, jeśli wiesz, że będziesz korzystać z protokołu Kafka. Aby uzyskać więcej informacji, zobacz ten problem w serwisie GitHub.
- Uwierzytelnianie SASL — współpraca platformy z protokołem uwierzytelniania SASL wymaganym przez usługę Event Hubs może być trudniejsza niż w oczach. Sprawdź, czy możesz rozwiązać problemy z konfiguracją przy użyciu zasobów platformy w uwierzytelnianiu SASL.
Limity
Apache Kafka a Kafka Event Hubs. W większości przypadków interfejs Kafka Azure Event Hubs ma takie same wartości domyślne, właściwości, kody błędów oraz zachowania ogólne co platforma Apache Kafka. Wystąpienia, które te dwa jawnie różnią się (lub gdy usługa Event Hubs nakłada limit, którego nie ma platforma Kafka), są wymienione poniżej:
- Maksymalna długość
group.id
właściwości to 256 znaków - Maksymalny rozmiar
offset.metadata.max.bytes
to 1024 bajty - Zatwierdzenia przesunięcia są ograniczane do 4 wywołań na sekundę na partycję z maksymalnym wewnętrznym rozmiarem dziennika wynoszącym 1 MB
Następne kroki
Aby dowiedzieć się więcej o usłudze Event Hubs i usłudze Event Hubs dla platformy Kafka, zobacz następujące artykuły: