502 Bozuk Ağ Geçidi - TooBigHeaders

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

İstemci uygulaması 502 Bad Gateway HTTP durum kodunu alır ve API yanıtı olarak protocol.http.TooBigHeaders hata kodu çağrısının en iyi yoludur.

Hata mesajı

İstemci uygulaması aşağıdaki yanıt kodunu alır:

HTTP/1.1 502 Bad Gateway

Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:

{
   "fault":{
      "faultstring":"response headers size exceeding 25,600",
      "detail":{
         "errorcode":"protocol.http.TooBigHeaders"
      }
   }
}

Olası nedenler

Bu hata, hedef/arka uç tarafından gönderilen üstbilgilerin toplam boyutu olduğunda ortaya çıkar sunucu Apigee Edge'e iletildiğinde, HTTP yanıtının bir parçası olarak izin verilen değerden Apigee Edge'de izin verilen sınır.

Bu hatanın olası nedenleri aşağıda açıklanmıştır:

Neden Açıklama Şunun için geçerli sorun giderme talimatları:
Yanıttaki başlıkların boyutu, izin verilen sınırdan büyük Belirli bir üstbilginin boyutu ya da tüm başlıkların başlık boyutlarının Apigee Edge'e verilen HTTP yanıtının bir parçası olarak hedef/arka uç sunucusu tarafından gönderilen başlıklar Apigee Edge'de izin verilen sınırdan fazlaysa. Edge Herkese Açık ve Private Cloud kullanıcıları

Sık kullanılan teşhis adımları

Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:

API Monitoring

API Monitoring'i kullanarak hatayı teşhis etmek için:

  1. Apigee Edge kullanıcı arayüzünde uygun role sahip olur.
  2. Sorunu incelemek istediğiniz kuruluşa geçin.

  3. Analiz > API İzleme > İnceleme sayfası.
  4. Hataları gözlemlediğiniz zaman aralığını seçin.
  5. Hata kodunu daraltmak için Proxy filtresini seçebilirsiniz.
  6. Zaman ile Hata Kodu'nun grafiğini çizin.
  7. protocol.http.TooBigHeaders hata koduna sahip bir hücre seçin: aşağıda gösterilmiştir:

    ( resmi büyüt)

  8. Hata koduyla ilgili bilgileri görürsünüz Aşağıda gösterildiği gibi protocol.http.TooBigHeaders:

    ( resmi büyüt)

  9. Günlükleri görüntüle'yi tıklayın ve başarısız isteğin bulunduğu satırı genişletin.

    ( resmi büyüt)

  10. Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
    • Durum Kodu: 502
    • Hata Kaynağı: target
    • Hata Kodu: protocol.http.TooBigHeaders.
  11. Hata Kaynağı için target ve Hata Kod, protocol.http.TooBigHeaders değerine sahiptir ve bu değer, hedef/ arka uç sunucusundan alınan HTTP yanıtında, boyutu daha büyük olan başlıklar bulunuyor Apigee Edge'de izin verilen sınırdan daha fazla.

İzleme aracı

  1. İzleme oturumunu etkinleştir ve şunlardan birini yapın:
    1. 502 Bad Gateway hatasının oluşmasını bekleyin veya
    2. Sorunu yeniden oluşturabiliyorsanız API çağrısı yapın ve 502 Bad Gateway hatasını yeniden oluşturun.
  2. Başarısız isteklerden birini seçin ve izini inceleyin.
  3. İzlemenin farklı aşamalarından yararlanın ve hatanın nerede olduğunu bulun meydana geldi.
  4. Bu hatayı genellikle Hata adlı akışta, Aşağıda gösterildiği gibi İstek hedef sunucuya gönderildi aşamasında:

    ( resmi büyüt)

    İzdeki hatanın değerlerini not edin:

    • hata: response headers size exceeding 25,600
    • error.class: com.apigee.errors.http.server.BadGateway

    Bu, Apigee Edge'in (İleti İşlemci bileşeni) hatayı yanıtı, bir üstbilgi boyutu nedeniyle arka uç sunucusundan yanıt alır almaz izin verilen sınırı aşıyor.

  5. Hatayı İstemciye Gönderilen Yanıt alanında görürsünüz. aşağıdaki gibi bir hata yanıtı Apigee Edge tarafından gönderildi:

    ( resmi büyüt)

  6. İzdeki hatanın değerlerini not edin. Yukarıdaki örnek izde şunlar gösterilir:
    • Hata: 502 Bad Gateway.
    • Hata İçeriği: {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
  7. İzlemede AX (Kayıtlı Analytics Verileri) aşamasına gidin tıklayıp ilgili ayrıntıları görebilirsiniz.

    ( resmi büyüt)

    Aşağıdakilerin değerini unutmayın:

    Hata başlıkları Değer
    X-Apigee-fault-code protocol.http.TooBigHeaders
    X-Apigee-fault-source target
    Hata İçeriği: Gövde {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}

NGINX

NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:

  1. Private Cloud kullanıcısıysanız NGINX erişim günlüklerini kullanarak şunları yapabilirsiniz: HTTP 502 Bad Gateway ile ilgili önemli bilgileri belirler.
  2. NGINX erişim günlüklerini kontrol edin:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Konum: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.

  3. Herhangi bir 502 hatası olup olmadığını görmek için arama yapın belirli bir süre boyunca protocol.http.TooBigHeaders hata koduyla (sorun geçmişte oluşmuşsa) veya hâlâ başarısız olan bir istek varsa 502
  4. X-Apigee-fault-code'da 502 hatası bulursanız protocol.http.TooBigHeaders değeriyle eşleşir ve ardından X-Apigee-fault-source.'un değerini ifade eder.

    NGINX erişim günlüğünden örnek 502 hatası:

    NGINX erişim günlüğünden yukarıdaki örnek giriş, X-Apigee-fault-code ve X-Apigee-fault-source:

    Hata başlıkları Değer
    X-Apigee-fault-code protocol.http.TooBigHeaders
    X-Apigee-fault-source target

Neden: Yanıttaki üstbilgilerin boyutu izin verilen sınırın üzerinde

Teşhis

  1. Şunun için Hata Kodu, Hata Kaynağı ve Yanıt Yük Boyutu'nu belirleyin: API İzleme, İzleme aracı veya NGINX Erişim günlükleri kullanılırken aşağıdaki adreste açıklandığı şekilde hata gözlemlendi: Yaygın teşhis adımları.
  2. Hata Kaynağı target değerine sahipse bu durum, hedef/arka uç sunucu tarafından Apigee'ye gönderilen yanıtta, boyutu daha büyük olan başlıklar bulunuyor Apigee Edge'de izin verilen sınırdan daha fazla.
  3. Hedef/arka uçtan gelen yanıtta, boyutu şu şekilde olan başlıkların bulunduğunu doğrulayabilirsiniz: şu yöntemlerden biri kullanılarak izin verilen sınırdan daha yüksek:

    Hata mesajı

    Hata mesajını kullanarak doğrulamak için:

    Apigee Edge'den alınan hata mesajının tamamına erişiminiz varsa faultstring inceleyin. faultstring, şunu belirtiyor: yanıt başlığı boyutu izin verilen sınırı aştı.

    Örnek hata mesajı:

    "faultstring":"response headers size exceeding 25,600"
    

    Yukarıdaki hata mesajında faultstring yanıtta toplam boyutu izin verilen sınırı aşan başlıklar bulunuyor.

    Gerçek istek

    Gerçek isteği kullanarak doğrulamak için:

    Hedef/arka uç sunucuya gönderilen gerçek isteğe erişiminiz varsa ardından aşağıdaki adımları uygulayın:

    1. Herkese Açık Bulut/Private Cloud kullanıcısıysanız istekte bulunun veya başka bir sunucudan doğrudan arka uç sunucusuna arka uca istekte bulunmanıza izin verilen makine sunucu.
    2. Private Cloud kullanıcısıysanız şunları da gönderebilirsiniz: arka uç sunucusuna gidin.
    3. Arka uç sunucusundan alınan yanıtı ve özellikle hesaplama yapıp yanıtta iletilen üstbilgilerin toplam boyutunu doğrular.
    4. Yanıt yükünde başlıkların boyutunun çok büyük Apigee Edge'de izin verilen sınırdan fazlaysa sorunun nedeni budur.

      Hedef sunucudan örnek yanıt:

      curl -v https://TARGET_SERVER_HOST/test
      
      * About to connect() to 10.1.0.10 port 9000 (#0)
      *   Trying 10.1.0.10...
      * Connected to 10.1.0.10 (10.1.0.10) port 9000 (#0)
      > GET /test HTTP/1.1
      > User-Agent: curl/7.29.0
      > Host: 10.1.0.10:9000
      > Accept: */*
      <
      < HTTP/1.1 200 OK
      < Accept-Ranges: bytes
      < Content-Length: 0
      < Content-Type: text/plain; charset=utf-8
      < Last-Modified: Tue, 20 Jul 2021 09:23:56 GMT
      < Testheader1: XVlBzgba—-<snipped>---THctcuAx
      < Testheader2: hxKQFDaFpLSj—-<snipped>---FbcXoEFfRsWxP
      < Date: Fri, 23 Jul 2021 09:51:22 GMT
      <
      * Connection #0 to host 10.1.0.10 left intact
      

      Yukarıdaki örnekte Testheader1 ve Testheader2 daha büyük boyutlara sahip. Bu durum, izin verilen sınırı aştığından bu hata için verilen Apigee Edge.

    ziyaret edin.

    İleti işleyen günlükleri

    İleti İşleyici günlüklerini kullanarak doğrulamak için:

    Private Cloud kullanıcısıysanız Mesaj İşleyici günlüklerini kullanarak Yanıt başlıkları boyutunun Apigee Edge'de izin verilen sınır.

    1. İleti İşleyici günlüklerini kontrol edin:

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    2. Belirli bir sırasında 502 hatası olup olmadığını görmek için arama yapın (sorun geçmişte oluşmuşsa) veya herhangi bir istek varsa hâlâ 502 ile başarısız oluyor. Aşağıdaki arama dizesini kullanabilirsiniz:
      grep -ri "response headers size exceeding"
      
      .
    3. system.log sağlayıcısından aşağıdakine benzer satırlar göreceksiniz. Sizin durumunuzda yanıt başlıklarının boyutu değişiklik gösterebilir:
      2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest rev:1
      messageid:r23ijb1b-1  NIOThread@1 ERROR HTTP.CLIENT -
      HTTPClient$Context$3.onException() :  ClientChannel[Connected:
      Remote:3.7.1.1:9000 Local:192.168.2.1:56098]@8414 useCount=1
      bytesRead=0 bytesWritten=207 age=640ms  lastIO=0ms  isOpen=true.onExceptionRead
      exception: {}
      com.apigee.errors.http.server.BadGateway: response headers size exceeding 25,600
      
      2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest
      rev:1 messageid:r23ijb1b-1  NIOThread@1 ERROR ADAPTORS.HTTP.FLOW -
      AbstractResponseListener.onException() : AbstractResponseListener.onError
      (HTTPResponse@31f3ef88, response headers size exceeding 25,600)
      
      .
    4. Mesaj İşleyici, arka uçtan/hedeften yanıt alır almaz sunucusu varsa ve üstbilgilerin toplam boyutunun 25 KB'tan büyük olduğunu saptarsa, durup hata veriyor:

      response headers size exceeding 25,600

      Bu durumda Toplam Başlık Boyutu 25 KB ve Apigee'den fazladır boyut, hata koduyla 25 KB sınırını aşmaya başladığında hatayı bildirir protocol.http.TooBigHeaders olarak

Çözünürlük

Boyutu sabitle

1. Seçenek [Önerilen]: Üstbilgi boyutunu göndermemesi için hedef sunucu uygulamasını düzeltin Apigee sınırını aşmak

  1. Belirli hedef sunucunun, yanıt üstbilgisi boyutunu daha fazla göndermesinin nedenini analiz edin. Sınırlar bölümünde tanımlanan izin verilen sınırdan daha fazla.
  2. Bu istenen bir durum değilse, arka uç sunucu uygulamanızı Boyutu Apigee Edge'de kullanılabilir.
  3. Üstbilgi bilgilerinin, yanıt gövdesinin bir parçası olarak gönderilip gönderilemeyeceğini kontrol edin.
  4. Mümkünse, proje kapsamında göndermeyi planladığınız tüm büyük bilgileri yanıt gövdesindeki üstbilgiyi kullandı. Böylece yanıtı aşmanızı önleyebilirsiniz. başlık sınırı.
ziyaret edin.

CwC

2. seçenek : Yanıt başlığı boyut sınırını artırmak için CwC özelliğini kullanma

Apigee, CwC özelliğini kullanabilirsiniz. Ayrıntılı bilgi için İleti İşleyici için sınırları yapılandırma

Sınırlar

Apigee, istemci uygulamasının ve arka uç sunucusunun şunları göndermemesini bekler başlıktaki boyut, belgede belirtildiği gibi izin verilen sınırdan büyüktür için İstek/Yanıt Başlığı Boyutu için Apigee Edge Sınırları.

  1. Herkese açık Cloud kullanıcısıysanız İstek ve Yanıt üstbilgilerinin boyutu, İstek/Yanıt Başlığı boyutu için Apigee Edge Sınırları.
  2. Private Cloud kullanıcısıysanız varsayılan maksimum sayıyı değiştirmiş olabilirsiniz. sınırı (önerilen bir uygulama olmasa da) için geçerli olur. Aşağıdaki talimatları uygulayarak maksimum Yanıt Üstbilgisi boyut sınırını belirleyebilirsiniz: Geçerli sınır nasıl kontrol edilir?

Geçerli sınır nasıl kontrol edilir?

Bu bölümde, HTTPResponse.headers.limit mülkünün şu özelliklere sahip olduğunu nasıl doğrulayacağınız açıklanmaktadır: Mesaj İşleyicilerde yeni bir değerle güncellendi.

  1. İleti İşleyici makinesinde özelliği arayın. HTTPResponse.headers.limit /opt/apigee/edge-message-processor/conf dizini ve için kontrol et: hangi değerin ayarlandığını aşağıda gösterildiği gibi görebilirsiniz:
    grep -ri "HTTPResponse.headers.limit" /opt/apigee/edge-message-processor/conf
    
  2. Yukarıdaki komuttan elde edilen örnek sonuç aşağıdaki gibidir:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.headers.limit=25k
    
    .
  3. Yukarıdaki örnek çıkışta, HTTPResponse.headers.limit özelliğine dikkat edin. http.properties içinde 25k değeriyle ayarlandı.

    Bu, Özel için Apigee'de yapılandırılan yanıt yükü boyutu sınırının olduğunu gösterir. Bulut boyutu 25 KB'tır.

Hâlâ Apigee Destek Ekibi'nden yardım almak istiyorsanız şu sayfaya gidin: Teşhis bilgileri toplanmalıdır.

Teşhis bilgileri toplanmalıdır

Aşağıdaki teşhis bilgilerini toplayın, ardından Apigee Edge Destek Ekibi ile iletişime geçin:

Herkese açık Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Kuruluş adı
  • Ortam adı
  • API Proxy adı
  • 502 hatasını yeniden oluşturmak için kullanılan curl komutunu tamamlayın
  • API istekleri için izleme dosyası
  • Hedef/arka uç sunucudan alınan yanıtın tam çıktısı ve başlıkların boyutu

Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Başarısız istekler için tam hata mesajı gözlemlendi
  • Kuruluş adı
  • Ortam adı
  • API Proxy paketi
  • Başarısız API istekleri için izleme dosyası
  • 502 hatasını yeniden oluşturmak için kullanılan curl komutunu tamamlayın
  • Hedef/arka uç sunucudan alınan yanıtın tam çıktısı ve başlıkların boyutu
  • NGINX erişim günlükleri /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Yer: ORG, ENV ve PORT# şununla değiştirilir: gerçek değerler.

  • Mesaj İşleyici sistem günlükleri /opt/apigee/var/log/edge-message-processor/logs/system.log