504 Ağ Geçidi Zaman Aşımı

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

İstemci uygulaması şu mesajla birlikte 504 HTTP durum kodunu alır: API çağrılarına yanıt olarak Gateway Timeout.

HTTP durum kodu - 504 Gateway Timeout hatası, istemcinin yürütülürken Uç Ağ Geçidi veya arka uç sunucusundan zamanında yanıt alamadı API

Hata mesajları

İstemci uygulaması aşağıdaki yanıt kodunu alır:

HTTP/1.1 504 Gateway Timeout

Bazı durumlarda aşağıdaki hata mesajı da görülebilir:

{
   "fault": {
      "faultstring": "Gateway Timeout",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.GatewayTimeout"
       }
    }
}

Ağ geçidi zaman aşımlarının nedeni nedir?

Edge platformu üzerinden gönderilen API isteklerinin tipik yolu Client -> Yönlendirici -> Mesaj İşleyici -> Arka Uç Sunucusu aşağıdaki şekilde gösterildiği gibidir:

Edge platformundaki istemci uygulaması, yönlendiriciler ve Mesaj İşlemcileri uygun zaman aşımı değerleri sunar. Edge platformu, belirli bir süre içinde yanıt gönderilmesini bekler . Şu süre içinde yanıt alamazsanız: dönemin ardından 504 Gateway Timeout Error döndürülür.

Aşağıdaki tabloda, Edge'de ne zaman zaman aşımlarının oluşabileceği hakkında daha fazla ayrıntı sunulmaktadır:

Zaman aşımı Ayrıntılar
İleti İşlemcide zaman aşımı oluyor
  • Arka uç sunucusu, belirtilen zaman aşımı süresi içinde İleti İşleyici'ye yanıt vermiyor. süresi belirlenebilir.
  • Mesaj İşlemci zaman aşımına uğrar ve yanıt durumunu 504 Gateway Timeout olarak Yönlendirici'ye gönderir.
Yönlendiricide zaman aşımı oluyor
  • İleti İşleyici, belirtilen zaman aşımı süresi içinde yönlendiriciye yanıt vermiyor nokta olduğunu unutmayın.
  • Yönlendirici zaman aşımına uğrar ve istemci uygulamasına yanıt durumunu 504 Gateway Timeout olarak gönderir.
İstemci uygulamasında zaman aşımı oluyor
  • Yönlendirici, istemci uygulamasına belirtilen zaman aşımı süresi içinde yanıt vermiyor sürekli kontrol panelinizden takip edebilirsiniz.
  • İstemci uygulaması zaman aşımına uğrar ve son kullanıcıya 504 Gateway Timeout yanıt durumunu sonlandırır.

Olası nedenler

Edge'de 504 Gateway Timeout hatasının tipik nedenleri şunlardır:

Neden Ayrıntılar Şunun için verilen adımlar:
Yavaş arka uç sunucusu API isteğini işleyen arka uç sunucusu, yüksek yük veya düşük performansa neden olabilir. Herkese açık ve Private Cloud kullanıcıları
Edge tarafından yavaşça API isteği işleme Yüksek yük veya yetersizlik nedeniyle Edge'in API isteğini işlemesi uzun sürüyor bazı yolları da görmüştük.

Yavaş arka uç sunucu

Arka uç sunucusu çok yavaşsa veya API isteğini işlemesi uzun sürüyorsa 504 Gateway Timeout hata mesajı alırsınız. Yukarıdaki bölümde açıklandığı gibi, zaman aşımı aşağıdaki senaryolardan biri söz konusu olduğunda gerçekleşebilir:

  1. Arka uç sunucusu yanıt vermeden önce Mesaj İşleyici zaman aşımına uğrar.
  2. İleti İşlemci/arka uç sunucusu yanıt vermeden önce yönlendirici zaman aşımına uğruyor.
  3. Yönlendirici/İleti İşlemci/arka uç sunucusu yanıt vermeden önce istemci uygulaması zaman aşımına uğrar.

Aşağıdaki bölümlerde, bu koşulların her biri kapsamında sorunun nasıl teşhis edileceği ve çözülebileceği açıklanmaktadır. senaryoları ele alacağız.

1. Senaryo Arka uç sunucusu yanıt vermeden önce Mesaj İşleyici zaman aşımına uğrar

Teşhis

504 Gateway Timeout hatasının oluşup oluşmadığını teşhis etmek için aşağıdaki prosedürleri kullanabilirsiniz arka uç sunucusunun yavaşlığı nedeniyle değişiyor.

1. Prosedür: Trace'i Kullanma

Sorun hâlâ etkinse (504 hata oluştuysa) aşağıdaki adımları uygulayın için şu adımları izleyin:

  1. Edge kullanıcı arayüzünde etkilenen API'yi izleyin. Hatanın oluşmasını bekleyin veya API çağrısı yapın, ardından bazı API çağrıları yapın ve 504 Gateway Timeout hatasını yeniden oluşturun.
  2. Hata oluştuktan sonra, yanıt kodunu aşağıdaki gibi gösteren isteği inceleyin: 504
  3. Her aşamada geçen süreyi kontrol edin ve zamanın en uzun olduğu aşamayı not edin harcadınız.
  4. Bir arka uç sunucusunun yavaş olduğunu veya çalışmasının uzun sürdüğünü gösterirse isteği işleme koyabilirsiniz:
    • İstek hedef sunucuya gönderildi
    • Hizmet Çağrısı politikası

Aşağıda, arka uç sunucusunun yalnızca yanıt vermediğini gösteren bir örnek İzleme verilmiştir. 55 saniye geçtikten sonra 504 Gateway Timeout hatası veriyor:

Yukarıdaki izde, İleti İşleyici arka uç sunucusunun zaman aşımına uğradığından 55.002 ms sonra zaman aşımına uğrar. yanıt vermez.

2. Prosedür Mesaj İşleyici günlüklerini kullanma

  1. Mesaj İşleyici'nin günlüğünü kontrol etme (/opt/apigee/var/log/edge-message-processor/logs/system.log)
  2. Belirli bir API proxy isteği için Gateway Timeout ve onTimeoutRead hataları bulursanız mesajı, İleti İşleyen'in zaman aşımına uğradığını gösterir.

    Ağ Geçidi Zaman Aşımı Hatası'nı gösteren örnek İleti İşleyici günlüğü

    2015-09-29 20:16:54,340 org:myorg env:staging api:profiles rev:13 NIOThread@1
    ERROR ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() :
    AbstractResponseListener.onError(HTTPResponse@4d898cf1, Gateway
    Timeout)
    2015-09-29 20:16:57,361 org:myorg env:staging api:profileNewsletters rev:8
    NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context$3.onTimeout() :
    SSLClientChannel[C:XX.XX.XX.XX:443 Remote
    host:192.168.38.54:38302]@120171 useCount=2 bytesRead=0
    bytesWritten=824 age=55458ms lastIO=55000ms .onTimeoutRead

    Yukarıdaki İleti İşleyici günlüğünde, arka uç sunucusunun IP ile belirtildiğini ve XX.XX.XX.XX adresi 55 saniye geçmesine rağmen yanıt vermedi (lastIO=55000ms). Sonuç olarak, İleti İşleyici zaman aşımına uğradı ve 504 Gateway Timeout hata gönderdi.

    Şunu kontrol edin: İleti İşleyici'de zaman aşımı nasıl denetlenir?

    • İleti İşleyici'de zaman aşımı nasıl denetlenir? Mesaj İşleyiciler genellikle mülk aracılığıyla 55 saniyelik varsayılan zaman aşımı değeri ile ayarlanır) HTTPTransport.io.timeout.millis. Bu zaman aşımı değeri bu kuruluşun hizmet verdiği bir kuruluşa ait tüm API Proxy'leri için geçerlidir Mesaj İşleyici.
      • Arka uç sunucusu 55 saniye içinde yanıt vermezse İleti İşlemci zaman aşımına uğrar ve istemciye 504 Gateway Timeout hata gönderir.
    • İleti İşleyen'de belirtilen zaman aşımı değeri io.timeout.millis mülkü tarafından geçersiz kılındı API Proxy'sinde belirtilir. Bu zaman aşımı değeri belirli bir API için geçerlidir Yukarıda belirtilen mülkün belirtildiği proxy. Örneğin, io.timeout.millis, API Proxy'sinde 10 saniyeye ayarlandıktan sonra bu API Proxy'si için 10 saniyelik zaman aşımı değeri kullanılır.
      • Arka uç sunucusu belirli bir sorgu için 10 saniye içinde API Proxy'si varsa Mesaj İşleyici zaman aşımına uğrar ve 504 Gateway Timeout gönderir. teslim etmek için iyi bir fırsattır.

Çözünürlük

  1. Arka uç sunucusunun neden 55 saniyeden fazla sürdüğünü kontrol edin. daha hızlı yanıt vermek için düzeltildi/optimize edildi.
  2. Arka uç sunucuyu düzeltmek/optimize etmek mümkün değilse ya da arka ucun sunucu, yapılandırılan zaman aşımından daha uzun sürer, bu durumda Yönlendirici ve Mesaj İşleyici'deki zaman aşımı değerini uygun bir değere yükseltin.

Senaryo 2 - İleti İşlemci/arka uç sunucusu yanıt vermeden önce yönlendirici zaman aşımına uğradı

Yönlendirici, Mesaj'dan önce zaman aşımına uğrarsa 504 Gateway Timeout hata mesajı alabilirsiniz İşlemci/arka uç sunucusu yanıt verir. Bu, aşağıdaki durumlardan birinde gerçekleşebilir:

  • Yönlendiricide ayarlanan zaman aşımı değeri İleti’de ayarlanan zaman aşımı değerinden kısa İşleyen. Örneğin, Yönlendirici üzerindeki zaman aşımının 50 saniye olduğunu, İleti İşlemci 55 saniyedir.
    Yönlendiricide zaman aşımı İleti İşleyicide zaman aşımı
    50 saniye 55 saniye
  • İleti İşleyicideki zaman aşımı değeri, Hedef uç nokta yapılandırmasında ayarlanmış io.timeout.millis özelliği örneği:

    Örneğin, aşağıdaki zaman aşımı değerleri ayarlanırsa:

    Yönlendiricide zaman aşımı İleti İşleyicide zaman aşımı API Proxy'si içinde zaman aşımı
    57 saniye 55 saniye 120 saniye

    Ancak io.timeout.millis, API Proxy'sinde 120 saniye olarak ayarlanmış:

    <HTTPTargetConnection>
         <Properties>
              <Property name="io.timeout.millis">120000</Property>
          </Properties>
          <URL>http://www.apigee.com</URL>
    </HTTPTargetConnection>

    Bu durumda İleti İşleyici, zaman aşımına uğrasa bile 55 saniye sonra zaman aşımına uğramaz değeri (55 saniye), yönlendiricideki zaman aşımı değerinden (57 saniye) küçük. Çünkü İleti İşleyicide 55 saniyelik zaman aşımı değeri, API Proxy'sinde ayarlanan 120 saniye. Bu nedenle, İleti İşleyici'nin zaman aşımı değeri API Proxy'si için 120 saniye uzunluğunda olacaktır.

    Yönlendiricinin, belirtilen zaman aralığında ayarlanmış 120 saniyeye kıyasla daha düşük bir zaman aşımı değeri (57 saniye) arka uç sunucusu 57'den sonra yanıt vermezse yönlendirici zaman aşımına uğrar. saniye.

Teşhis

  1. NGINX erişim günlüğünü kontrol etme (/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log)
  2. Yönlendirici, Mesaj İşleyici'den önce zaman aşımına uğrarsa 504 durumunu görürsünüz için NGINX erişim günlüklerinde ve message id Mesaj İşleyici - olarak ayarlanır. Bunun nedeni Yönlendiricinin hiç yanıt almamasıdır yönlendiricide belirlenen zaman aşımı süresi içinde İleti İşleyici'den

    Yönlendirici zaman aşımına uğradığı için 504 hatasını gösteren örnek NGINX Günlük Girişi

  3. Yukarıdaki örnekte, NGINX'teki 504 durumuna (İleti'deki ileti kimliği) dikkat edin. İşlemci - ve toplam geçen süre 57,001 saniye. Bunun nedeni, yönlendiricinin zaman aşımına uğramasıdır hale geldi ve Mesaj İşleyici'den herhangi bir yanıt almadık.
  4. Bu durumda, Mesaj bölümünde Broken Pipe istisna görürsünüz. İşlemci günlükleri (/opt/apigee/var/log/edge-message-processor/logs/system.log).
    2017-06-09 00:00:25,886 org:myorg env:test api:myapi-v1 rev:23 messageid:rrt-mp01-18869-23151-1  NIOThread@1 INFO  HTTP.SERVICE - ExceptionHandler.handleException() : Exception java.io.IOException: Broken pipe occurred while writing to channel ClientOutputChannel(ClientChannel[A:XX.XX.XX.XX:8998 Remote host:YY.YY.YY.YY:51400]@23751 useCount=1 bytesRead=0 bytesWritten=486 age=330465ms  lastIO=0ms )
    2017-06-09 00:00:25,887  org:myorg env:test api:myapi-v1 rev:23 messageid:rrt-mp01-18869-23151-1  NIOThread@1 INFO  HTTP.SERVICE - ExceptionHandler.handleException() : Exception trace:
    java.io.IOException: Broken pipe
            at com.apigee.nio.channels.ClientOutputChannel.writePending(ClientOutputChannel.java:51) ~[nio-1.0.0.jar:na]
            at com.apigee.nio.channels.OutputChannel.onWrite(OutputChannel.java:116) ~[nio-1.0.0.jar:na]
            at com.apigee.nio.channels.OutputChannel.write(OutputChannel.java:81) ~[nio-1.0.0.jar:na]
    <snipped>

Bu hata, yönlendirici zaman aşımına uğradığında Mesaj İşleyici. İleti İşleyen, işlemini tamamladığında iletiyi yazmaya çalışır. yanıt verir. Yönlendirici bağlantısı zaten kapalı olduğundan, Broken Pipe exception (Mesaj İşleyici).

Bu istisnanın yukarıda açıklanan koşullarda görülmesi beklenir. Dolayısıyla asıl 504 Gateway Timeout hatasının nedeni hâlâ arka uç sunucusunun yanıt vermesi daha uzun sürüyor olabilir ve bu sorunu gidermeniz gerekir.

Çözünürlük

  1. Bu bir özel arka uç sunucusuysa
    1. Arka uç sunucusunun yanıt vermesinin neden uzun sürdüğünü kontrol edin ve yanıtın olası bir sorun olup olmadığına bakın. daha hızlı yanıt vermek için düzeltildi/optimize edildi.
    2. Arka uç sunucusunu düzeltmek/optimize etmek mümkün değilse ya da arka uç sunucuyu optimize etmek mümkün değilse veya zaman aşımını olursa zaman aşımı değerini artırın Yönlendirici ve Mesaj İşlemci.

      Fikir: Aşağıdaki öğelerde farklı bileşenlerdeki zaman aşımı değerini ayarlayın sipariş:

      İstemcide Zaman Aşımı > Yönlendiricide Zaman Aşımı > Mesajda Zaman Aşımı İşlemci > API Proxy'sinde zaman aşımı

  2. Bu bir NodeJS arka uç sunucusuysa:
    1. NodeJS kodunun başka arka uç sunucularına çağrı yapıp yapmadığını ve uzun süre beklemeniz gerekebilir. Arka uç sunucularının neden daha uzun sürdüğünü ve hangi ve sorunu uygun şekilde düzeltin.
    2. Mesaj İşlemcilerinin yüksek CPU veya Bellek kullanımı olup olmadığını kontrol edin:
      1. Herhangi bir İleti İşlemci yüksek CPU kullanımı yaşıyorsa üç tane oluşturun ileti dizisi Dökümleri gönderebilirsiniz:
        JAVA_HOME/bin/jstack -l PID > FILENAME
      2. Herhangi bir Mesaj İşlemci yüksek bellek kullanıyorsa bir yığın dump
        sudo -u apigee JAVA_HOME/bin/jmap -dump:live,format=b,file=FILENAME PID
      3. Aşağıdaki komutu kullanarak Mesaj İşleyici'yi yeniden başlatın. aşağı tüketim (burndown) ve hafıza:
        /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      4. Sorunun devam edip etmediğini doğrulamak için API çağrılarını izleyin.
      5. Apigee Edge Destek Ekibi ile iletişime geçin ve iş parçacığı dökümleri, yığın dökümü ve İleti İşlemci günlükleri (/opt/apigee/var/log/edge-message-processor/logs/system.log)Yardımcı olarak yüksek CPU/bellek kullanımının nedenini araştırın.

Kontrol Edin: İletide NodeJS arka uç sunucuları için zaman aşımı nasıl kontrol edilir? İşlemci

  • NodeJS arka uç sunucusu, Mesaj İşleyici'nin JVM işlemi içinde çalışır. İlgili içeriği oluşturmak için kullanılan NodeJS arka uç sunucularının zaman aşımı değeri özellik aracılığıyla kontrol edilir nodejs.properties dosyasında http.request.timeout.seconds. Bu özelliği varsayılan olarak 0 değerine ayarlanır; diğer bir deyişle, zaman aşımı Bu Mesaj İşleyici tarafından hizmet verilen bir kuruluşa ait API Proxy'leri. Dolayısıyla, bir NodeJS arka uç sunucusu uzun zaman alırsa İleti İşleyici zaman aşımına uğramaz.
  • Bununla birlikte, NodeJS arka uç sunucusunun çalışması uzun sürüyorsa ve API istek > 57 saniye sürerse, Yönlendirici zaman aşımına uğrar ve 504 Gateway Timeout gönderir. teslim etmek için iyi bir fırsattır.

3. Senaryo - Yönlendirici/İleti İşlemci/arka uç sunucusu öncesinde istemci uygulaması zaman aşımına uğradı şu yanıtı verir:

İstemci uygulaması504 Gateway Timeout arka uç sunucusu yanıt verir. Bu durum, aşağıdaki durumlarda yaşanabilir:

  1. İstemci uygulamasında ayarlanan zaman aşımı değeri, yönlendirici ve İleti İşleyici:

    Örneğin, aşağıdaki zaman aşımı değerleri ayarlanırsa:

    İstemcide Zaman Aşımı Yönlendiricide zaman aşımı İleti İşleyicide zaman aşımı
    50 saniye 57 saniye 55 saniye

    Bu durumda, Edge üzerinden bir API isteğine yanıt almak için gereken toplam süre 50 saniyenin altında. Buna bir API isteğinde bulunmak için gereken süre, isteğin Edge (Yönlendirici, Mesaj İşleyici) tarafından işlenen, arka uç sunucusuna gönderilen istek (varsa), arka uç isteği işleme ve yanıtı gönderme, Edge'in ve son olarak da müşteriye geri gönderebilir.

    Yönlendirici, istemciye 50 saniye içinde yanıt vermezse yönlendiriciyle bağlantıyı kesin. İstemci, 504

    Bu işlem, NGINX'in, istemcinin499 bağlantı.

Teşhis

  1. İstemci uygulaması, yönlendiriciden yanıt almadan önce zaman aşımına uğrarsa, yönlendiriciyle bağlantıyı kapatın. Bu durumda, Chrome'da 499 şeklinde bir NGINX erişim günlüklerini kontrol eder.

    499 durum kodunu gösteren örnek NGINX Günlük Girişi

  2. Yukarıdaki örnekte, NGINX'teki 499 durumu ve geçen toplam süre 50,001 saniye. Bu, istemcinin 50,001 saniye sonra zaman aşımına uğradığını gösterir.
  3. Bu durumda, Mesaj bölümünde Broken Pipe İstisna göreceksiniz. İşlemci günlükleri (/opt/apigee/var/log/edge-message-processor/logs/system.log).
    2017-06-09 00:00:25,886 org:myorg env:test api:myapi-v1 rev:23 messageid:rrt-1-11193-11467656-1  NIOThread@1 INFO  HTTP.SERVICE - ExceptionHandler.handleException() : Exception java.io.IOException: Broken pipe occurred while writing to channel ClientOutputChannel(ClientChannel[A:XX.XX.XX.XX:8998 Remote host:YY.YY.YY.YY:51400]@23751 useCount=1 bytesRead=0 bytesWritten=486 age=330465ms  lastIO=0ms )
    2017-06-09 00:00:25,887  org:myorg env:test api:myapi-v1 rev:23 messageid:rrt-1-11193-11467656-1  NIOThread@1 INFO  HTTP.SERVICE - ExceptionHandler.handleException() : Exception trace:
    java.io.IOException: Broken pipe
            at com.apigee.nio.channels.ClientOutputChannel.writePending(ClientOutputChannel.java:51) ~[nio-1.0.0.jar:na]
            at com.apigee.nio.channels.OutputChannel.onWrite(OutputChannel.java:116) ~[nio-1.0.0.jar:na]
            at com.apigee.nio.channels.OutputChannel.write(OutputChannel.java:81) ~[nio-1.0.0.jar:na]
    <snipped>
  4. Yönlendirici zaman aşımına uğradıktan sonra, Mesaj İşleyici ile bağlantıyı kapatır. İleti İşlemci, işlemlerini tamamlar, yanıtı Yönlendirici'ye yazmaya çalışır. Yönlendirici bağlantısı zaten kapalı olduğundan Mesaj İşlemcide Broken Pipe exception gösterilir.
  5. Yukarıda açıklanan koşullarda bu istisnanın olması beklenir. Bu nedenle, bir proje yöneticisinin 504 Gateway Timeout hatasının nedeni hâlâ arka uç sunucusunun yanıt vermesinin uzun sürmesi ve bu sorunu gidermeniz gerekir.

Çözünürlük

  1. Söz konusu sunucu özel arka uç sunucunuzsa:
    1. İşlemin neden 57 saniyeden fazla sürdüğünü belirlemek için arka uç sunucusunu kontrol edin ve daha hızlı yanıt vermek için düzeltilebilir/optimize edilebilir.
    2. Arka uç sunucusunu düzeltmek/optimize etmek mümkün değilse veya arka uç sunucusunu biliyorsanız arka uç sunucusunun çalışması uzun sürer, bu durumda zaman aşımı değerini yönlendirici ve İleti İşleyici gibi özellikleri de yükleyebilirsiniz.

      Fikir: Aşağıdaki öğelerde farklı bileşenlerdeki zaman aşımı değerini ayarlayın sipariş:

      İstemcide Zaman Aşımı > Yönlendiricide Zaman Aşımı > Mesajda Zaman Aşımı İşlemci > API Proxy'sinde zaman aşımı

  2. Bu bir NodeJS arka ucuysa:
    1. NodeJS kodunun başka arka uç sunucularına çağrı yapıp yapmadığını kontrol edin uzun sürüyor. Bu arka uç sunucularının neden daha uzun sürdüğünü kontrol edin.
    2. Mesaj İşlemcilerinin yüksek CPU veya bellek kullanımı yaşayıp yaşamadığını kontrol edin:
      1. Bir İleti İşlemcinin yüksek CPU kullanımı varsa üç kod oluşturun ileti dizisi Dökümleri gönderebilirsiniz:
        JAVA_HOME/bin/jstack -l PID > FILENAME
      2. Bir Mesaj İşlemci yüksek bellek kullanıyorsa bir yığın dökümü kullanabilirsiniz:
        sudo -u apigee JAVA_HOME/bin/jmap -dump:live,format=b,file=FILENAME PID
      3. Aşağıdaki komutu kullanarak Mesaj İşleyici'yi yeniden başlatın. Bu işlem, CPU ve bellek:
        /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      4. Sorunun devam edip etmediğini doğrulamak için API çağrılarını izleyin.
      5. Apigee Edge Destek Ekibi ile iletişime geçin ve iş parçacığı dökümleri, yığın dökümü ve İleti İşlemci günlükleri (/opt/apigee/var/log/edge-message-processor/logs/system.log) yüksek CPU/bellek kullanımının nedenini araştırın.

Şu cihazda zaman aşımı değerini artır: Yönlendirici ve Mesaj İşlemci

Bu ayara bağlı olarak Yönlendirici ve İleti İşlemcide ayarlanacak zaman aşımı değerlerini ve gereksinimlerinizi karşılayın. Rastgele büyük zaman aşımı değerleri ayarlamayın. Yardıma ihtiyacınız varsa Apigee Edge Desteği.

Yönlendirici

chown apigee:apigee /opt/apigee/customer/application/router.properties
  1. /opt/apigee/customer/application/router.properties dosyasını Yönlendirici makine (varsa).
  2. Bu dosyaya aşağıdaki satırı ekleyin:
    conf_load_balancing_load.balancing.driver.proxy.read.timeout=TIME_IN_SECONDS

    Örneğin, zaman aşımı değerini 120 saniye olarak ayarlamak isterseniz bu değeri şöyle olur:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
  3. Bu dosyanın sahibi Apigee:
  4. Yönlendiriciyi yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  5. Birden fazla yönlendiriciniz varsa yukarıdaki adımları tüm yönlendiricilerde tekrarlayın.

Mesaj İşleyici

  1. /opt/apigee/customer/application/message-processor.properties dosyasını şurada oluştur: (mevcut değilse) İleti İşleme Makinesi.
  2. Bu dosyaya aşağıdaki satırı ekleyin:
    conf_http_HTTPTransport.io.timeout.millis=TIME_IN_MILLISECONDS

    Örneğin, zaman aşımı değerini 120 saniye olarak ayarlamak isterseniz bu değeri şöyle olur:

    conf_http_HTTPTransport.io.timeout.millis=120000
  3. Bu dosyanın sahibi Apigee:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. Mesaj İşleyici'yi yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  5. Birden fazla İleti İşleyiciniz varsa İletilerin tamamını oluşturmak için yukarıdaki adımları İşlemciler.

Fikir: Farklı bileşenlerdeki zaman aşımı değerini aşağıdaki sırayla ayarlayın:

İstemcide Zaman Aşımı > Yönlendiricide Zaman Aşımı > İleti İşleyicide zaman aşımı &gt; API Proxy'sinde zaman aşımı

Edge'in yavaş API isteği işlemesi

Edge'in çok yavaş olması ve/veya API isteğini işlemesi uzun zaman alıyorsa 504 Gateway Timeout hata.

Teşhis

  1. Edge kullanıcı arayüzünde etkilenen API'yi izleyin.
  2. Hatanın oluşmasını bekleyin veya API çağrınız varsa bazı API çağrıları yapın ve 504 Gateway Timeout hatasını yeniden oluşturun.
  3. Bu durumda, Trace'te başarılı bir yanıt görebileceğinizi unutmayın.
    1. Mesaj İşleyici, Yönlendirici/istemcide belirtilen zaman aşımı süresi (hangisi en kısa zaman aşımı süresine sahipse). Ancak Mesaj İşleyen, isteği işlemeye devam eder ve isteği tamamlayabilir bahsettik.
    2. Ayrıca, HTTPTransport.io.timeout.millis İleti İşleyici yalnızca İleti İşleyen, bir HTTP/HTTPS ile iletişim kurarsa tetiklenir arka uç sunucusuna gidin. Başka bir deyişle, herhangi bir politika (diğer çok zaman alıyor.
  4. Hata oluştuktan sonra, etkinliklerde en uzun geçen süre.
  5. Her aşamada geçen süreyi kontrol edin ve en çok zamanın olduğu aşamayı not edin harcadınız.
  6. Hizmet dışındaki politikalardan birinde en uzun süre geçen süreyi gözlemlerseniz Bu politika, Edge'in isteğinde bulunabilirsiniz.
  7. JavaScript Politikası'nda geçen sürenin çok yüksek olduğunu gösteren örnek bir kullanıcı arayüzü izleme örneğini burada bulabilirsiniz:

  8. Yukarıdaki örnekte, JavaScript politikasının anormal derecede uzun bir süre süresiyle (yaklaşık 245 saniye)

Çözünürlük

  1. Yanıt vermesi uzun süren politika olup olmadığını ve uzun sürebilir. Böyle bir kod varsa bu kodu kullanıp kullanamayacağınızı tanımlanan kodu düzeltmek/optimize etmek.
  2. Uzun işleme süresine neden olabilecek özel bir kod yoksa İleti İşlemciler yüksek CPU veya bellek kullanımı yaşıyor:
    1. Herhangi bir İleti İşlemci yüksek CPU kullanımı yaşıyorsa üç tane oluşturun ileti dizisi Dökümleri gönderebilirsiniz:
      JAVA_HOME/bin/jstack -l PID > FILENAME
    2. Herhangi bir İleti İşlemci yüksek düzeyde bellek kullanımına sahipse, yeni bir kod oluşturun yığın dökümü kullanabilirsiniz:
      sudo -u apigee JAVA_HOME/bin/jmap -dump:live,format=b,file=FILENAME PID
    3. Aşağıdaki komutu kullanarak Mesaj İşleyici'yi yeniden başlatın. Bu işlem, CPU belleğini ve Hafıza.
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    4. API çağrılarını izleyin ve sorunun devam edip etmediğini doğrulayın.
    5. Apigee Edge Destek Ekibi ile iletişime geçip iş parçacığınızı sağlayın dökümler, yığın dökümü ve İleti İşleyici günlükleri (/opt/apigee/var/log/edge-message-processor/logs/system.log) yüksek CPU/bellek kullanımının nedenini araştırın.

API Monitoring'i kullanarak sorunları teşhis etme

API İzleme; hata, performans, gecikme sorunlarını ve bunların kaynağını teşhis etmek için sorunlu alanları hızlı bir şekilde izole etmenizi sağlar. hedef URL'ler veya API platformu gibi farklı biçimlere sahip olur.

API Monitoring'i kullanarak API'lerinizle ilgili 5xx sorunlarını nasıl gidereceğinizi gösteren örnek bir senaryoyu inceleyin. Örneğin, 504 durum kodlarının sayısı belirli bir eşiği aştığında bildirim almak için bir uyarı ayarlamak isteyebilirsiniz.