Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması 502 Bad Gateway
HTTP durum kodunu hata koduyla alıyor
protocol.http.TooBigLine
API çağrılarına yanıt olarak kullanılır.
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 line size exceeding 2,048", "detail":{ "errorcode":"protocol.http.TooBigLine" } } }
Olası nedenler
Bu hata, reklamveren tarafından gönderilen Yanıt Satırı boyutunun hedef/arka uç sunucusundan Apigee'ye HTTP yanıtının bir parçası olarak Edge izin verilen maksimum değerden büyük Apigee Edge'de kullanılamaz.
Bu hatanın olası nedenlerine bakmadan önce, Yanıt-Satırı'nın ne anlama geldiğini anlayalım. ve boyutunun nasıl kontrol edileceği.
Yanıt Satırını Anlama
Tipik bir HTTP yanıtı üç bölümden oluşur:
- Status-Line (Apigee'de Yanıt Satırı olarak anılır)
- ( HTTP üstbilgileri kümesi )
- [ Metin ]
Yanıt Satırı üç bölümden oluşur: protokol sürümü ve ardından sayısal durum kodu ve ilişkili metin ifadesi için aşağıdaki adımları uygulayın:
Response-Line = <HTTP-Version> <Status-Code> <Reason-Phrase>
Hedef/arka uç sunucu uygulaması tarafından bir HTTP yanıtı gönderildiğinde,
gönderilen, yukarıda açıklandığı gibi Yanıt Satırı'nı temsil eder. Bunu, ardından şu gelir:
başlıkları ve yanıt gövdesi/yükü.Aşağıdaki örnek ekran görüntüsünde,
curl
isteği, İstek bölümü ve Yanıt kısmı (
yanıt-satırı) kaldırın.
Yanıt satırı boyutunu anlama
Yukarıda açıklanan örnekte, yanıttaki başlangıç satırı (ilk satır) da aşağıdaki şekilde Yanıt Satırı olarak adlandırılır:
HTTP/1.1 200 OK
Bu yanıt satırı
15 ASCII characters
içerdiğinden boyutu~15 bytes
. Bu, içinde olduğundan izin verilen sınırı aştığında, yanıt herhangi bir uyarı olmadan istemciye hatalarının sayısı.- Benzer şekilde
faultstring
Yukarıda gösterilen hata mesajı"response line size exceeding 2,048"
içeriyor. Bu, HTTP yanıtındaki Yanıt Satırı'nın, hedef/arka uç sunucu tarafından gönderilen 2.048 baytı aştı.
Geniş yanıt hatlarını anlama
Tanımına göre Durum Satırı (burada Yanıt Satırı olarak anılır) ve tipik HTTP istekleri ve boyut, Apigee Edge'de tanımlanan varsayılan sınır olan 2 K'den çok daha küçük olur Dolayısıyla, sınıra ulaşabilirsiniz. Bununla birlikte, bu sınırı aşabileceğiniz bazı olası senaryolar şunlardır:
- Hedef/arka uç sunucusu bir HTTP sistemi değil. HTTP olmayan bir cihazla yanıt veriyor olabilir tıklayın.
- Hedef/arka uç sunucusunda sorunlar var ve HTTP'nin parçası olarak uzun bir Yanıt Satırı gönderiyor tıklayın.
Bu konuda daha fazla bilgi için: Hata protokolü.http.TooBigLine, "2.048'i aşan yanıt satırı boyutu alınıyor.
Bu hatanın olası nedenleri aşağıda açıklanmıştır:
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
Yanıt satırı boyutu izin verilen sınırdan büyük | Apigee Edge'e verilen HTTP yanıtı Apigee Edge'de izin verilen sınır | 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.TooBigLine
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.TooBigLine
:( 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.
- Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
- Durum Kodu:
502
- Hata Kaynağı:
target
- Hata Kodu:
protocol.http.TooBigLine
.
- Durum Kodu:
- Hata Kaynağı için
target
ve Hata Kod,protocol.http.TooBigLine
değerine sahiptir ve bu değer, hedef/ arka uç sunucusundan alınan HTTP yanıtının Yanıt Satırı boyutu şundan büyüktür: Apigee Edge'de izin verilen maksimum sınır.
İ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.
Hatayı genellikle
flowinfo
Hata içinde Aşağıda gösterildiği gibi İstek hedef sunucuya gönderildi aşamasından sonra:İzdeki hatanın değerlerini not edin:
- hata:
response line exceeding 2,048
- error.class:
com.apigee.errors.http.server.BadGateway
Bu, Apigee Edge'in (İleti İşlemci bileşeni) hatayı yanıt satırı boyutu nedeniyle arka uç sunucusundan yanıt alır almaz izin verilen sınırı aşıyor.
- hata:
Bu hata mesajını, istemciye gönderilen Yanıt Gönderildi Müşteri aşamasını aşağıda görebilirsiniz:
( resmi büyüt)
- İzdeki hatanın değerlerini not edin:
- Hata:
502 Bad Gateway
. - Hata İçeriği:
{"fault":{"faultstring":"response line exceeding 2,048","detail":{"errorcode":"protocol.http.TooBigLine"}}}
- Hata:
Ayrıca, izde AX (Kayıtlı Analytics Verileri) aşamasına da gidebilirsiniz ve hata ayrıntılarını görmek için bu simgeyi tıklayın.
( resmi büyüt)
Aşağıdakilerin değerini unutmayın:
İstek başlıkları Değer X-Apigee-fault-code protocol.http.TooBigLine
X-Apigee-fault-source target
Hata İçeriği : Gövde {"fault":{"faultstring":"response line size exceeding 2,048","detail":{"errorcode":"protocol.http.TooBigLine"}}}
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
hatalarıyla 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.
- Belirli bir sürede
502
hatası olup olmadığını görmek için arama yapın (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.TooBigLine
değeriyle eşleşir ve ardından X-Apigee-fault-source.'un değerini ifade eder.NGINX erişim günlüğünden yukarıdaki örnek giriş, X- Apigee-fault-code ve X-Apigee-fault-source:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.TooBigLine
X-Apigee-fault-source target
Neden: Yanıt Satırı boyutu izin verilen sınırdan fazla
Teşhis
- API kullanılarak gözlemlenen hatanın Hata Kodu ve Hata Kaynağı'nı belirleme Aşağıdaki bölümde açıklandığı şekilde İzleme, İzleme aracı veya NGINX erişim günlükleri Yaygın teşhis adımları.
- Hata Kaynağı
target
değerine sahipse bu durum, Hedef/arka uç sunucu uygulaması tarafından Apigee'ye gönderilen Yanıt Hattı boyutu Apigee Edge'de izin verilen sınır. Yanıt satırı boyutunun 2 KB'lık sınırı aştığını doğrulamak için aşağıdaki kodu kullanarak aşağıdaki yöntemlerden birini tercih edebilirsiniz:
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
Örnek hata mesajı:
"faultstring":"response line size exceeding 2,048"
Yukarıdaki
faultstring
, yanıt satırı boyutunun izin verilen sınırı aştığını gösteriyor izin verilmelidir.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 aşağıdaki adımları uygulayın:
- Yanıt satırının boyutunu doğrulamak
- URI boyutunun
Apigee Edge'de izin verilen sınır varsa
düşünmesi gerekir.
Hedef/arka uç sunucusundan alınan örnek yanıt:
curl -v http://HOSTALIAS/test
* Trying 3.2.1.4... * TCP_NODELAY set * Connected to <hostalias> (3.2.1.4) port 80 (#0) > GET /test HTTP/1.1 > Host: HOSTALIAS > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 1111…<trimmed>...11111111 < Date: Mon, 26 Jul 2021 07:07:18 GMT < Content-Type: application/json < Content-Length: 269 < Connection: keep-alive < Server: gunicorn/19.9.0 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < { <Response Body> } * Connection #0 to host <hostalias> left intact * Closing connection 0
Yukarıdaki örnekte, Yanıt Satırı
HTTP/1.1 200 1111…<trimmed>...11111111
2 KB'tan büyük, yani 2'den fazla K ASCII karakteri.Başka bir istemci kullanıyorsanız istemci günlüklerini inceleyip kullanarak Apigee Edge'e gönderilen Yanıt Hattı'nın boyutunu öğrenebilirsiniz.
İ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 şunları yapabilirsiniz: yanıt satırı boyutunun Apigee Edge'de izin verilen sınır.
- API Monitoring, Trace aracını kullanarak başarısız isteğin mesaj kimliğini belirleyin. Sık kullanılan teşhis adımları bölümünde açıklandığı şekilde NGINX erişim günlükleri.
İleti İşleyen günlüğünde ileti kimliğini arayın:
/opt/apigee/var/log/edge-message-processor/logs/system.log
system.log
sağlayıcısından şuna benzer satırlar göreceksiniz:2021-07-26 06:45:41,451 org:myorg env:prod api:testtoobigline rev:1 messageid:r-5110240-1 NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context$3.onException() : ClientChannel[Connected: Remote:3.2.1.2:80 Local:192.168.205.251:44398]@20592 useCount=1 bytesRead=0 bytesWritten=201 age=144ms lastIO=0ms isOpen=true.onExceptionRead exception: {} com.apigee.errors.http.server.BadGateway: response line size exceeding 2,048 at <snipped> 2021-07-26 06:45:41,451 org:myorg env:prod api:testtoobigline rev:1 messageid:r-5110240-1 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() : AbstractResponseListener.onError (HTTPResponse@6a5d6c33, response line size exceeding 2,048)
Yukarıdaki
message = response line size exceeding 2,048
metni hata mesajı, yanıt satırı boyutunun 2 KB'tan fazla olduğunu belirtir. Dolayısıyla, Apigee Edge istisnayı devre dışı bırakır ve bir502
durum kodu hata koduprotocol.http.TooBigline
gönderir.
Çözünürlük
Boyutu sabitle
1. Seçenek [Önerilen]: Gönderilmemesi gereken hedef/arka uç sunucu uygulamasını düzeltin İzin verilen sınırın üzerinde olan yanıt satırları
- Belirli bir müşterinin daha büyük boyutta bir Yanıt Satırı göndermesinin nedenini analiz edin Sınırlar bölümünde tanımlanan izin verilen sınırdan daha fazla.
- İstenmiyorsa hedef/arka uç sunucu uygulamanızı izin verilen sınırdan daha küçük bir Yanıt Satırı gönderir.
- İsterseniz ve yanıt satırından daha büyük bir Yanıt Satırı göndermek istiyorsanız izin verilen sınır değerini görüyorsanız sonraki seçeneklere gidin.
CwC
2. seçenek: Yanıt satırı sınırını artırmak için CwC özelliğini kullanma
Apigee, bir CwC sunar. özelliğini kullanmanızı öneririz. Ayrıntılar için bkz. Mesaj İşleyen'de Yanıt Satırı sınırını belirleyin.
Sınırlar
Apigee, istemci uygulamasının ve arka uç sunucusunun İstek/Yanıt Satırları göndermemesini bekler boyutları İstek/Yanıt Satırı Sınırı için belgelenen izin verilen sınırın üzerinde olan Apigee Edge Limits'te kullanıma sunulmuştur.
- Herkese Açık Bulut kullanıcısıysanız İstek ve Yanıt Satırı boyutu, İstek/Yanıt Satırı 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 bile). Maksimum Yanıt Satırı boyut sınırını aşağıdaki talimatları uygulayarak belirleyebilirsiniz: Geçerli sınır nasıl kontrol edilir?
Geçerli sınır nasıl kontrol edilir?
Bu bölümde, HTTPResponse.line.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.line.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.line.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.line.limit=2k
. Yukarıdaki örnek çıkışta
HTTPResponse.line.limit
özelliğine dikkat edin.http.properties
içinde2k
değeriyle ayarlandı.Bu, Özel için Apigee'de yapılandırılan Yanıt Satırı boyutu sınırının olduğunu gösterir. Bulut boyutu 2 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 tam curl komutu- API istekleri için izleme dosyası
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ınNGINX 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