Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması 414 Request-URI Too Long
HTTP durum kodunu alır ve
hata kodu: protocol.http.TooBigLine
.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 414 Request-URI Too Long
Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:
{ "fault":{ "faultstring":"request line size exceeding 7,168", "detail":{ "errorcode":"protocol.http.TooBigLine" } } }
Yukarıdaki hata mesajında yer alan faultstring
değerinin izin verilen sınırı içerdiğini unutmayın
Apigee Edge'deki 7168 bytes
(7 KB) istek satırı için
Olası nedenler
Bu hata, istemci uygulaması tarafından Apigee Edge'e gönderilen istek hattının boyutu olduğunda ortaya çıkar Apigee Edge'de izin verilen sınırdan fazla olduğunda.
Bu hatanın olası nedenlerine bakmadan önce, istek satırının ne anlama geldiğini anlayalım. ve boyutunun nasıl kontrol edileceği.
İstek Satırını Anlama
Tipik bir HTTP isteği üç bölümden oluşur:
- İstek-Satırı
- ( HTTP üstbilgileri kümesi )
- [ Metin ]
İstek satırı, aşağıda gösterildiği gibi üç bölümden oluşur.
Request-Line = <Method> <Request-URI> <HTTP-Version>
İstemci uygulaması tarafından sunucuya bir HTTP isteğinde bulunulduğunda, sunucu, yukarıda açıklanan İstek Satırı'nı içerir. Bunu, ardından şu gelir: istek gövdesine/yüküne bakın.
Aşağıdaki örnek ekran görüntüsünde tipik bir curl
isteği (İstek) gösterilmektedir.
bölümü (İstek Satırı ile birlikte) ve Yanıt bölümü.
İstek-Satırı boyutunu anlama
- Yukarıda açıklanan örnekte, istekteki start satırı (ilk satır)
İstek Satırı olarak da bilinir:
GET /test/ HTTP/1.1
İstek Satırı'nın boyutu,
~19 bytes
içerdiğinden19 ASCII characters
. Bu, içinde olduğundan izin verilen sınırı kullanıyorsanız istek herhangi bir hata olmadan işlenir. ve başarılı bir yanıt alırsınız. - Benzer şekilde içindeki
faultstring
için Yukarıda gösterilen hata mesajı"request line size exceeding 7,168"
içeriyor. Bu, istemci tarafından yapılan HTTP isteğindeki İstek Satırı değerinin aşıldığını gösterir 7.168 bayt.
Bu hatanın olası nedenleri aşağıda açıklanmıştır:
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
İstek yükü boyutu, izin verilen sınırdan büyük | HTTP'nin bir parçası olarak istemci uygulaması tarafından gönderilen Request-URI'ın boyutu isteği Apigee Edge'de izin verilen sınırdan fazladı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.
- Zaman ile Hata Kodu'nun grafiğini çizin.
protocol.http.TooBigLine
hata koduna sahip bir hücre seçin ve aşağıda gösterildiği gibi414
durum kodu:( resmi büyüt)
protocol.http.TooBigline
hata koduyla ilgili bilgileri görürsünüz aşağıdaki gibidir:( resmi büyüt)
Günlükleri görüntüle'yi tıklayın ve başarısız isteğin olduğu satırı genişletin:
( resmi büyüt)
Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
- Durum Kodu:
414
- Hata Kaynağı:
apigee
- Hata Kodu:
protocol.http.TooBigLine
. - İstek Uzunluğu(bayt):
7244 (> 7KB)
- Durum Kodu:
- Hata Kaynağı
apigee
veyaMP
değerine sahipse Hata Kodu,protocol.http.TooBigLine
değerine sahiptir ve İstek Uzunluğu 7 KB'tan büyükse bu, HTTP isteğinin istek URI'sı, Apigee'de izin verilen sınır'a dokunun.
İzleme aracı
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
414
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
414
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 varsa414
X-Apigee-fault-code'da
414
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 policy
İstek Uzunluğunu not edin:
7244
(7,244 KB > izin verilen sınır)
Neden: İstek yükü boyutu izin verilen sınırın üzerinde
Teşhis
- Şu öğe için Hata Kodu, Hata Kaynağı ve İstek-Uzunluğu boyutunu belirleyin. API İzleme, İzleme Aracı veya NGINX Erişim günlükleri kullanılırken aşağıdaki sayfada açıklandığı gibi hata gözlemlendi: Yaygın teşhis adımları.
- Hata Kaynağı
apigee
veyaMP
değerine sahipse bu istemci uygulaması tarafından Apigee'ye gönderilen istek boyutunun Apigee Edge'de izin verilen sınır. - İstek satır boyutunun 7 KB'lık izin verilen sınırı aştığını doğrulamak için şunlardan birini kullanabilirsiniz:
aşağıdaki yöntemleri kullanabilirsiniz:
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: İstek Satırı boyutu, izin verilen 7 KB sınırını aştı.Örnek hata mesajı:
"faultstring":"request line size exceeding 7,168"
Gerçek istek
Gerçek isteği kullanarak doğrulamak için:
İstemci uygulamanın yaptığı asıl isteğe erişiminiz varsa ardından aşağıdaki adımları uygulayın:
- İstekte geçirilen URI'nın boyutunu doğrulayın.
URI boyutunun Apigee Edge'de izin verilen sınır bir açıklama ekleyin.
Örnek istek:
curl http://<hostalias>/testtoobigline?_qparam=000000000000000000……..000000<trimmed> -k -X POST
Yukarıdaki örnekte,
qparam
sorgu parametresinin değeri Boyutu 7 KB'tan büyükse, yani 7'den fazla K ASCII karakteri içerir.Başka bir istemci kullanıyorsanız istemci günlüklerini inceleyebilir ve Apigee Edge'e gönderilen istek satırının büyüklüğünü öğrenmeye çalışın.
İ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 İstek Satırı 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
414
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â414
ile başarısız oluyor. Aşağıdaki arama dizelerini kullanabilirsiniz.grep -ri "exceeding"
grep -ri "RequestURITooLong"
system.log
sağlayıcısından şuna benzer satırlar göreceksiniz:2021-07-12 08:53:31,461 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:null, uri:null, message Id:null, exception:com.apigee.errors.http.user.RequestURITooLong{ code = protocol.http.TooBigLine, message = request line size exceeding 7,168, associated contexts = []}, context:Context@366f4217 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.195.90:8443 Local:192.168.67.23:34256]@301912 useCount=1 bytesRead=0 bytesWritten=45849 age=2254670ms lastIO=0ms isOpen=true)
Şu sayfadaki
message = request line size exceeding 7,168
metni: yukarıdaki hata iletisi, İstek URI'si boyutunun 7 KB'tan büyük olduğunu gösteriyor. Bu nedenle, Apigee Edge istisnayıcom.apigee.errors.http.user.RequestURITooLong
ve iade İstemci uygulamalarına hata koduyla birlikteprotocol.http.TooBigline
414
durum kodu.
Çözünürlük
Boyutu sabitle
1. Seçenek [Önerilen]: İstemci uygulamayı, izin verilen sınırdan daha büyük bir istek URI boyutu göndermeyecek şekilde düzeltin
- Belirli bir istemcinin istek URI'sı boyutunun şundan daha büyük olma nedenini analiz edin: Sınırlar bölümünde tanımlandığı şekilde izin verilen sınır.
İstenmiyorsa istemci uygulamanızı istek URI'si gönderecek şekilde değiştirin. izin verilen sınırdan küçük.
Yukarıda açıklanan örnekte uzun sorguyu ileterek sorunu çözebilirsiniz parametresini aşağıda gösterildiği gibi istek URL'si:
curl https://<host>/testtoobigline -k -X GET -d '{_qparam=000000000000000000<trimmed>}' -v
- İsterseniz ve izin verilen sınırın üzerinde bir URI göndermek istiyorsanız seçenekleri de belirleyebilirsiniz.
CwC
2. seçenek : İstek satırı sınırını artırmak için CwC mülkünü kullanma
Apigee, CwC özelliğini kullanabilirsiniz. Ayrıntılı bilgi için Mesaj İşleyici'de istek 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 İstek-Satırı boyut sınırını şu adresteki 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, HTTPRequest.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.
HTTPRequest.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 "HTTPRequest.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:HTTPRequest.line.limit=7k
. Yukarıdaki örnek çıkışta,
HTTPRequest.line.limit
özelliğine dikkat edin.http.properties
içinde7k
değeriyle ayarlandı.Bu, Özel için Apigee'de yapılandırılan İstek Satırı boyutu sınırının olduğunu gösterir. Bulutun boyutu 7 KB.
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ı
414
hatasını yeniden oluşturmak için kullanılancurl
komutunu tamamlayın- 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ı
414
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