Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak 414 Request-URI Too Long HTTP durum kodunu protocol.http.TooBigLine hata koduyla birlikte alır.
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, Apigee Edge'deki istek satırı için izin verilen sınırı (7168 bytes yani 7 KB) içerir.
Olası nedenler
Bu hata, istemci uygulaması tarafından HTTP isteğinin bir parçası olarak Apigee Edge'e gönderilen istek satırının boyutu Apigee Edge'deki izin verilen sınırı aştığında oluşur.
Bu hatanın olası nedenlerine bakmadan önce, istek satırının ne anlama geldiğini ve boyutunun nasıl kontrol edileceğini öğrenelim.
İstek satırını anlama
Tipik bir HTTP isteği üç bölümden oluşur:
- Request-Line
- ( HTTP üstbilgileri kümesi)
- [ Body ]
İ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 bir sunucuya HTTP isteği gönderildiğinde, sunucuya giden ilk satır yukarıda açıklanan Request-Line'ı içerir. Bunu üstbilgiler ve istek gövdesi/yükü izler.
Aşağıdaki örnek ekran görüntüsünde, tipik bir curl isteği, Request (İstek) bölümü (Request-Line ile birlikte) ve Response (Yanıt) bölümü gösterilmektedir.
İstek satırı boyutunu anlama
- Yukarıda bahsedilen örnekte, istekteki başlangıç satırı (ilk satır), Request-Line olarak da adlandırılır ve şu şekildedir:
GET /test/ HTTP/1.1
İstek satırı
19 ASCII charactersiçerdiğinden boyutu~19 bytes'dır. Bu, Apigee Edge'deki izin verilen sınır içinde olduğundan istek herhangi bir hata olmadan işlenir ve başarılı bir yanıt alırsınız. - Benzer şekilde, yukarıda gösterilen
hata mesajındaki
faultstringsimgesinde"request line size exceeding 7,168"bulunur. Bu,istemci tarafından yapılan HTTP isteğindeki Request-Line'ın 7.168 baytı aştığını gösterir.
Bu hatanın olası nedenleri şunlardır:
| Neden | Açıklama | Aşağıdaki ürünler için geçerli sorun giderme talimatları |
|---|---|---|
| İstek yükü boyutu, izin verilen sınırdan büyük | İstemci uygulaması tarafından Apigee Edge'e HTTP isteği kapsamında gönderilen Request-URI'nin boyutu, Apigee Edge'de izin verilen sınırı aşıyor. | Edge Public ve Private Cloud kullanıcıları |
Sık karşılaşılan teşhis adımları
Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:
API Monitoring
API İzleme'yi kullanarak hatayı teşhis etmek için:
- Apigee Edge kullanıcı arayüzünde oturum açın. Uygun bir role sahip bir kullanıcı olarak oturum açın.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analyze > API Monitoring > Investigate (Analiz > API İzleme > İnceleme) sayfasına gidin.
- Hataları gözlemlediğiniz belirli zaman aralığını seçin.
- Hata Kodunu Zaman ile karşılaştırın.
- Aşağıda gösterildiği gibi hata kodu
protocol.http.TooBigLineve durum kodu414içeren bir hücre seçin:
Aşağıda gösterildiği gibi, hata kodu
protocol.http.TooBiglinehakkındaki bilgileri görürsünüz:
Günlükleri görüntüle'yi tıklayın ve başarısız isteğin satırını genişletin:
Günlükler penceresinde aşağıdaki ayrıntıları not edin:
- Durum Kodu:
414 - Hata Kaynağı:
apigee - Hata Kodu:
protocol.http.TooBigLine. - İstek Uzunluğu(bayt):
7244 (> 7KB)
- Durum Kodu:
- Hata Kaynağı değeri
apigeeveyaMPise, Hata Kodu değeriprotocol.http.TooBigLineise ve İstek Uzunluğu 7 KB'tan büyükse bu durum, istemciden gelen HTTP isteğinin Apigee'de izin verilen sınır'dan daha büyük bir istek URI'sine sahip olduğunu gösterir.
İzleme aracı
NGINX
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Özel bulut kullanıcısıysanız HTTP
414hatalarıyla ilgili temel bilgileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logNerede: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.
- Belirli bir süre boyunca
414hataları olup olmadığını (sorun geçmişte yaşandıysa) veya414ile hâlâ başarısız olan istekler olup olmadığını kontrol edin. X-Apigee-fault-code değerinin
protocol.http.TooBigLinedeğeriyle eşleştiği414hataları bulursanız X-Apigee-fault-source değerini belirleyin.
NGINX erişim günlüğündeki yukarıdaki örnek girişte, X-Apigee-fault-code ve X-Apigee-fault-source için aşağıdaki değerler yer almaktadır:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.TooBigLineX-Apigee-fault-source policyİstek Uzunluğuna Dikkat Edin:
7244(7.244 KB > izin verilen sınır)
Neden: İstek yük boyutu, izin verilen sınırdan daha büyük
Teşhis
- Hata Kodu, Hata Kaynağı ve İstek Uzunluğu boyutunu belirleyin. Bu değerler, Genel teşhis adımları bölümünde açıklandığı gibi API İzleme, İzleme Aracı veya NGINX Erişim günlükleri kullanılarak gözlemlenen hataya aittir.
- Hata Kaynağı değeri
apigeeveyaMPise bu, istemci uygulaması tarafından Apigee'ye gönderilen istek boyutunun Apigee Edge'de izin verilen sınırdan daha büyük olduğunu gösterir. - Aşağıdaki yöntemlerden birini kullanarak istek satırı boyutunun izin verilen 7 KB sınırını aştığını doğrulayabilirsiniz:
Hata mesajı
Hata mesajını kullanarak doğrulamak için:
Apigee Edge'den alınan hata mesajının tamamına erişiminiz varsa
faultstringbölümüne bakın.faultstring, İstek satırı boyutunun izin verilen 7 KB sınırını aştığını gösterir.Örnek hata mesajı:
"faultstring":"request line size exceeding 7,168"
Gerçek istek
Gerçek isteği kullanarak doğrulamak için:
İstemci uygulaması tarafından yapılan gerçek isteğe erişiminiz varsa aşağıdaki adımları uygulayın:
- İstekte iletilen URI'nin boyutunu doğrulayın.
URI'nin boyutunun Apigee Edge'de izin verilen sınırdan daha büyük olduğunu fark ederseniz sorunun nedeni budur.
Örnek istek:
curl http://<hostalias>/testtoobigline?_qparam=000000000000000000……..000000<trimmed> -k -X POST
Yukarıdaki örnekte, sorgu parametresinin değeri
qparam7 KB'tan büyük, yani 7.000'den fazla ASCII karakter içeriyor.Başka bir istemci kullanıyorsanız istemci günlüklerini inceleyebilir ve Apigee Edge'e gönderilen istek satırının boyutunu bulmaya çalışabilirsiniz.
Mesaj işleyici günlükleri
Mesaj İşleyici günlüklerini kullanarak doğrulamak için:
Özel Cloud kullanıcısıysanız İstek satırı boyutunun Apigee Edge'deki izin verilen sınırı aşıp aşmadığını doğrulamak için Mesaj İşleyici günlüklerini kullanabilirsiniz.
Mesaj İşleyici günlüklerini kontrol edin:
/opt/apigee/var/log/edge-message-processor/logs/system.log414belirli bir süre boyunca (sorun geçmişte yaşandıysa) hata olup olmadığını veya414ile hâlâ başarısız olan istekler olup olmadığını kontrol edin. Aşağıdaki arama dizelerini kullanabilirsiniz.grep -ri "exceeding"
grep -ri "RequestURITooLong"
system.logile ilgili aşağıdaki gibi satırlar görürsünüz: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)
Yukarıdaki hata mesajında yer alan
message = request line size exceeding 7,168metni, istek URI'sinin boyutunun 7 KB'tan fazla olduğunu gösterir. Bu nedenle, Apigee Edgecom.apigee.errors.http.user.RequestURITooLongistisnasını oluşturur veprotocol.http.TooBiglinehata koduyla414durum kodunu istemci uygulamalarına döndürür.
Çözünürlük
Boyutu düzelt
1. seçenek [Önerilen]: İstemci uygulamasının, izin verilen sınırdan daha büyük bir istek URI'si boyutu göndermesini engelleyin
- Belirli bir istemcinin, Sınırlar bölümünde tanımlanan izin verilen sınırın üzerinde istek URI boyutu göndermesinin nedenini analiz edin.
Bu durum istenmiyorsa istemci uygulamanızı, istek URI'si boyutunu izin verilen sınırdan daha küçük olacak şekilde gönderecek biçimde değiştirin.
Yukarıda bahsedilen örnekte, uzun sorgu parametresini istek URL'sinin bir parçası olarak iletmek yerine istek gövdesinin/yükünün bir parçası olarak ileterek sorunu düzeltebilirsiniz.
curl https://<host>/testtoobigline -k -X GET -d '{_qparam=000000000000000000<trimmed>}' -v- İsteniyorsa ve izin verilen sınırdan daha fazla URI göndermek istiyorsanız sonraki seçeneklere gidin.
CwC
2. seçenek : İstek satırı sınırını artırmak için CwC özelliğini kullanma
Apigee, istek satırı boyutu sınırını artırmasına olanak tanıyan bir CwC özelliği sağlar. Ayrıntılar için İleti işlemcisinde istek satırı sınırını ayarlama başlıklı makaleyi inceleyin.
Sınırlar
Apigee, istemci uygulamasının ve arka uç sunucusunun, Apigee Edge Sınırları'ndaki İstek/Yanıt Satırı Sınırı için belgelendiği gibi, boyutları izin verilen sınırı aşan İstek/Yanıt Satırları göndermemesini bekler.
- Herkese açık bulut kullanıcısıysanız İstek ve Yanıt Satırı boyutu için maksimum sınır, Apigee Edge Sınırları'nda İstek/Yanıt Satırı boyutu için belirtilen sınırdır.
- Özel bulut kullanıcısıysanız İstek ve Yanıt satırı boyutu için varsayılan maksimum sınırı değiştirmiş olabilirsiniz (önerilen bir uygulama olmasa da). Geçerli sınırı kontrol etme başlıklı makaledeki talimatları uygulayarak maksimum Request-Line boyut sınırını belirleyebilirsiniz.
Mevcut sınır nasıl kontrol edilir?
Bu bölümde, tesisin HTTPRequest.line.limit Mesaj İşleyiciler'de yeni bir değerle güncellendiğinin nasıl doğrulanacağı açıklanmaktadır.
- Mesaj İşleyici makinesinde,
HTTPRequest.line.limitözelliğini/opt/apigee/edge-message-processor/confdizininde arayın ve aşağıdaki gibi hangi değerin ayarlandığını kontrol edin:grep -ri "HTTPRequest.line.limit" /opt/apigee/edge-message-processor/conf
- Yukarıdaki komutun örnek sonucu aşağıdaki gibidir:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.line.limit=7k
Yukarıdaki örnek çıktıda,
HTTPRequest.line.limitözelliğininhttp.propertiesiçinde7kdeğeriyle ayarlandığını unutmayın.Bu, Private Cloud için Apigee'de yapılandırılan Request-Line boyutu sınırının 7 KB olduğunu gösterir.
Apigee Destek Ekibi'nden hâlâ yardıma ihtiyacınız varsa Toplanması gereken teşhis bilgileri başlıklı makaleyi inceleyin.
Teşhis bilgilerini toplamalıdır
Aşağıdaki teşhis bilgilerini toplayın ve ardından Apigee Edge Destek Ekibi ile iletişime geçin:
Herkese açık bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API proxy'si adı
414hatasını yeniden oluşturmak için kullanılancurlkomutunun tamamı- API istekleri için izleme dosyası
Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Başarısız olan istekler için gözlemlenen hata mesajının tamamı
- Kuruluş adı
- Ortam adı
- API proxy paketi
- Başarısız olan API isteklerinin izleme dosyası
414hatasını yeniden oluşturmak için kullanılancurlkomutunun tamamıNGINX erişim günlükleri
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logNerede: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.
- Mesaj İşleyici sistem günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log