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:
- Apigee Edge kullanıcı arayüzünde uygun role sahip olur.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analiz > API İzleme > İnceleme sayfası.
- Hataları gözlemlediğiniz zaman aralığını seçin.
- Hata kodunu daraltmak için Proxy filtresini seçebilirsiniz.
- Zaman ile Hata Kodu'nun grafiğini çizin.
protocol.http.TooBigHeaders
hata koduna sahip bir hücre seçin: aşağıda gösterilmiştir:( resmi büyüt)
Hata koduyla ilgili bilgileri görürsünüz Aşağıda gösterildiği gibi
protocol.http.TooBigHeaders
:( resmi büyüt)
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)
- Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
- Durum Kodu:
502
- Hata Kaynağı:
target
- Hata Kodu:
protocol.http.TooBigHeaders
.
- Durum Kodu:
- 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ı
- İzleme oturumunu etkinleştir
ve şunlardan birini yapın:
502 Bad Gateway
hatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız API çağrısı yapın ve
502 Bad Gateway
hatasını yeniden oluşturun.
- Başarısız isteklerden birini seçin ve izini inceleyin.
- İzlemenin farklı aşamalarından yararlanın ve hatanın nerede olduğunu bulun meydana geldi.
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.
- hata:
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)
- İ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"}}}
- Hata:
İ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:
- 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. 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.
- Herhangi bir
502
hatası olup olmadığını görmek için arama yapın belirli bir süre boyuncaprotocol.http.TooBigHeaders
hata koduyla (sorun geçmişte oluşmuşsa) veya hâlâ başarısız olan bir istek varsa502
X-Apigee-fault-code'da
502
hatası bulursanızprotocol.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
- Ş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ı.
- 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. - 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:
- 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.
- Private Cloud kullanıcısıysanız şunları da gönderebilirsiniz: arka uç sunucusuna gidin.
- Arka uç sunucusundan alınan yanıtı ve özellikle hesaplama yapıp yanıtta iletilen üstbilgilerin toplam boyutunu doğrular.
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 intactYukarıdaki örnekte
Testheader1
veTestheader2
daha büyük boyutlara sahip. Bu durum, izin verilen sınırı aştığından bu hata için verilen Apigee Edge.
İ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.
İleti İşleyici günlüklerini kontrol edin:
/opt/apigee/var/log/edge-message-processor/logs/system.log
- 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"
. 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)
.-
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
- 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.
- Bu istenen bir durum değilse, arka uç sunucu uygulamanızı Boyutu Apigee Edge'de kullanılabilir.
- Üstbilgi bilgilerinin, yanıt gövdesinin bir parçası olarak gönderilip gönderilemeyeceğini kontrol edin.
- 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ı.
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ı.
- 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ı.
- 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.
- İ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
- Yukarıdaki komuttan elde edilen örnek sonuç aşağıdaki gibidir:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.headers.limit=25k
. Yukarıdaki örnek çıkışta,
HTTPResponse.headers.limit
özelliğine dikkat edin.http.properties
içinde25k
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ılancurl
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ılancurl
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