Aracılığıyla paylaş


Event Hubs için Apache Kafka sorun giderme kılavuzu

Bu makalede, Apache Kafka için Event Hubs kullanırken karşılaşabileceğiniz sorunlar için sorun giderme ipuçları sağlanır.

Sunucu Meşgul özel durumu

Kafka azaltma nedeniyle Sunucu Meşgul özel durumu alabilirsiniz. AMQP istemcilerinde Event Hubs, hizmet azaltma sırasında hemen bir sunucu meşgul özel durumu döndürür. "Daha sonra yeniden deneyin" iletisiyle eşdeğerdir. Kafka'da iletiler tamamlanmadan önce geciktirilir. Gecikme uzunluğu, oluşturma/getirme yanıtında olduğu gibi milisaniye cinsinden throttle_time_ms döndürülür. Çoğu durumda, bu gecikmeli istekler Event Hubs panolarında sunucu meşgul özel durumları olarak günlüğe kaydedilmez. Bunun yerine yanıtın throttle_time_ms değeri, aktarım hızının sağlanan kotayı aştığını gösteren bir gösterge olarak kullanılmalıdır.

Trafik aşırıysa, hizmet aşağıdaki davranışa sahiptir:

  • İstek oluşturmanın gecikmesi istek zaman aşımını (request.timeout.ms) aşarsa Event Hubs, İlke İhlali hata kodunu döndürür.
  • Getirme isteğinin gecikmesi istek zaman aşımını aşarsa, Event Hubs isteği kısıtlanmış olarak günlüğe kaydeder ve boş kayıt kümesiyle yanıt verir ve hata kodu yoktur.

Ayrılmış kümelerin azaltma mekanizmaları yoktur. Küme kaynaklarınızın tümünü kullanabilirsiniz.

Kayıt alınmadi

Tüketicilerin hiçbir kayıt almadığını ve sürekli yeniden dengelemediğini görebilirsiniz. Bu senaryoda tüketiciler hiçbir kayıt alamaz ve sürekli yeniden dengelenmez. Bu durumda bir özel durum veya hata yoktur, ancak Kafka günlükleri tüketicilerin gruba yeniden katılmaya ve bölümler atamaya çalışırken takıldığını gösterir. Bunun birkaç olası nedeni vardır:

  • En request.timeout.ms azından önerilen değerin 60000 olduğundan ve en session.timeout.ms azından önerilen değerin 30000 olduğundan emin olun. Bu ayarların çok düşük olması tüketici zaman aşımlarına neden olabilir ve bu da yeniden dengelenmelere neden olabilir (daha sonra daha fazla zaman aşımına neden olur ve bu da daha fazla yeniden dengelemeye neden olur vb.)
  • Yapılandırmanız bu önerilen değerlerle eşleşiyorsa ve hala sürekli yeniden dengeleme görüyorsanız, bir sorun açmaktan çekinmeyin (hata ayıklamaya yardımcı olabilmemiz için tüm yapılandırmanızı soruna eklediğinizden emin olun)!

Sıkıştırma/İleti biçimi sürümü sorunu

Kafka için Event Hubs şu anda yalnızca gzip sıkıştırma algoritmasını desteklemektedir. Başka bir algoritma kullanılırsa, istemci uygulamaları ileti biçimi sürüm hatası (örneğin, The message format version on the broker does not support the request.) görür.

Desteklenmeyen bir sıkıştırma algoritmasının kullanılması gerekiyorsa, verilerinizi aracılara göndermeden önce belirli bir algoritmayla sıkıştırmak ve aldıktan sonra sıkıştırmayı açmak geçerli bir geçici çözümdür. İleti gövdesi hizmet için yalnızca bir bayt dizisidir, bu nedenle istemci tarafı sıkıştırma/sıkıştırmayı açma herhangi bir soruna neden olmaz.

UnknownServerException

Kafka istemci kitaplıklarından aşağıdaki örneğe benzer bir UnknownServerException alabilirsiniz:

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

Microsoft desteğiyle bir bilet açın. UTC'de hata ayıklama düzeyi günlüğe kaydetme ve özel durum zaman damgaları, sorunun hata ayıklamasında yararlı olur.

Diğer sorunlar

Event Hubs'da Kafka kullanırken sorunlarla karşılaşırsanız aşağıdaki öğeleri denetleyin.

  • Güvenlik duvarı trafiği engelliyor - 9093 numaralı bağlantı noktasının güvenlik duvarınız tarafından engellenmediğinden emin olun.
  • TopicAuthorizationException - Bu özel durumun en yaygın nedenleri şunlardır:
    • Yapılandırma dosyanızdaki bağlantı dizesi bir yazım hatası veya
    • Temel katman ad alanında Kafka için Event Hubs kullanılmaya çalışılıyor. Kafka için Event Hubs özelliği temel katmanda desteklenmez.
  • Kafka sürüm uyuşmazlığı - Kafka Ekosistemleri için Event Hubs, Kafka 1.0 ve sonraki sürümleri destekler. Kafka protokolünün geriye dönük uyumluluğu nedeniyle Kafka sürüm 0.10 ve üzerini kullanan bazı uygulamalar zaman zaman çalışabilir, ancak eski API sürümlerinin kullanılmasını kesinlikle öneririz. Kafka 0.9 ve önceki sürümleri gerekli SASL protokollerini desteklemez ve Event Hubs'a bağlanamaz.
  • Kafka ile kullanırken AMQP üst bilgilerinde garip kodlamalar - AMQP üzerinden bir olay hub'ına olay gönderirken, amqp yükü üst bilgileri AMQP kodlamasında serileştirilir. Kafka tüketicileri AMQP'den üst bilgileri seri durumdan çıkarmaz. Üst bilgi değerlerini okumak için AMQP üst bilgilerinin kodunu el ile çözebilirsiniz. Alternatif olarak, Kafka protokolü aracılığıyla kullanacağınızı biliyorsanız AMQP üst bilgilerini kullanmaktan kaçınabilirsiniz. Daha fazla bilgi için bu GitHub konusuna bakın.
  • SASL kimlik doğrulaması - Çerçevenizin Event Hubs tarafından gereken SASL kimlik doğrulama protokolüyle işbirliği yapması gözlerden daha zor olabilir. SASL kimlik doğrulamasında çerçevenizin kaynaklarını kullanarak yapılandırma sorunlarını giderip giderebileceğinize bakın.

Sınırlar

Apache Kafka ve Event Hubs Kafka karşılaştırması. Çoğu bölümde, Azure Event Hubs Kafka arabirimi Apache Kafka ile aynı varsayılanlara, özelliklere, hata kodlarına ve genel davranışlara sahiptir. Bu ikisinin açıkça farklılık gösterdiği (veya Event Hubs'ın Kafka'nın uygulamadığı bir sınır uyguladığı durumlar) aşağıda listelenmiştir:

  • Özelliğin group.id maksimum uzunluğu 256 karakterdir
  • En büyük boyutu offset.metadata.max.bytes 1024 bayttır
  • Uzaklık işlemeleri, en fazla 1 MB iç günlük boyutuyla bölüm başına 4 çağrı/saniyeye kısıtlanmıştır

Sonraki adımlar

Kafka için Event Hubs ve Event Hubs hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: