414 İstek URI'si Çok Uzun - TooBigLine

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:

  1. İstek-Satırı
  2. ( HTTP üstbilgileri kümesi )
  3. [ 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

  1. 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ğinden 19 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.

  2. 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:

  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. Zaman ile Hata Kodu'nun grafiğini çizin.
  6. protocol.http.TooBigLine hata koduna sahip bir hücre seçin ve aşağıda gösterildiği gibi 414 durum kodu:

    ( resmi büyüt)

  7. protocol.http.TooBigline hata koduyla ilgili bilgileri görürsünüz aşağıdaki gibidir:

    ( resmi büyüt)

  8. 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)

  9. 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)
  10. Hata Kaynağı apigee veya MP 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:

  1. Private Cloud kullanıcısıysanız NGINX erişim günlüklerini kullanarak şunları yapabilirsiniz: HTTP 414 hatalarıyla 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. 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 varsa 414
  4. X-Apigee-fault-code'da 414 hatası bulursanız protocol.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

  1. Ş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ı.
  2. Hata Kaynağı apigee veya MP değerine sahipse bu istemci uygulaması tarafından Apigee'ye gönderilen istek boyutunun Apigee Edge'de izin verilen sınır.
  3. İ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:

    1. İstekte geçirilen URI'nın boyutunu doğrulayın.
    2. 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.

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

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

    2. 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"
      
    3. 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 birlikte protocol.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

  1. 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.
  2. İ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
    
  3. İ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.

  1. 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ı.
  2. 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.

  1. İ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
    
  2. Yukarıdaki komuttan elde edilen örnek sonuç aşağıdaki gibidir:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.line.limit=7k
    
    .
  3. Yukarıdaki örnek çıkışta, HTTPRequest.line.limit özelliğine dikkat edin. http.properties içinde 7k 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ılan curl 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ılan curl komutunu tamamlayın
  • 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