Arka Uç Sunucusundan 504 Ağ Geçidi Zaman Aşımı

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Belirti

İstemci uygulaması, API çağrılarına yanıt olarak "Gateway Timeout" mesajıyla birlikte 504 HTTP durum kodunu alır.

Bu hata yanıtı, istemcinin bir API çağrısının yürütülmesi sırasında Apigee Edge'den veya arka uç sunucusundan zamanında yanıt almadığını gösterir.

Hata Mesajı

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

HTTP/1.1 504 Gateway Timeout

Bu kodun ardından aşağıdaki gibi bir hata mesajı gösterilebilir:

<html>
<head><title>504 Gateway Timeout</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Timeout</h1></center>
</body>
</html>

Ağ geçidi zaman aşımlarına ne neden olur?

Apigee Edge üzerinden yapılan bir API isteğinin tipik yolu, aşağıdaki şekilde gösterildiği gibi İstemci -> Yönlendirici -> Mesaj İşleyici -> Arka Uç Sunucusu'dur:

API isteği yolu

İstemci uygulaması, yönlendiriciler ve mesaj işlemciler uygun zaman aşımı değerleriyle yapılandırılır. Apigee Edge, zaman aşımı değerlerine bağlı olarak belirli bir süre içinde her API isteğine yanıt verilmesini bekler. Yanıt belirtilen süre içinde alınmazsa 504 Gateway Timeout yanıtı döndürülür.

Olası nedenler

Apigee Edge'de, arka uç sunucusundan gelen 504 Ağ Geçidi Zaman Aşımı yanıtının tipik nedeni şudur:

Neden Açıklama İlgili Sorun Giderme Talimatları
Arka uç sunucusu 504 Ağ Geçidi Zaman Aşımı ile yanıt veriyor Arka uç sunucusunda zaman aşımı oluşur ve Mesaj İşleyiciye 504 Gateway Timeout yanıtı döndürülür. Edge Private ve Public Cloud kullanıcıları

Arka uç sunucusu 504 Ağ Geçidi Zaman Aşımı ile yanıt veriyor

Arka uç sunucusu, 504 Gateway Timeout HTTP yanıt koduyla yanıt verebilir.

Teşhis

Bu bölümde, 504 Ağ Geçidi Zaman Aşımı hatasının nasıl doğru şekilde teşhis edileceği açıklanmaktadır. Hem özel hem de genel bulut kullanıcıları için prosedürler listelenir.

1. Prosedür: Trace'i kullanma (özel ve genel bulut kullanıcıları)

  1. Etkilenen API için Apigee kullanıcı arayüzünde İzleme'yi etkinleştirin.
  2. Arka uç sunucusuna istek gönderin.
  3. Başarısız olan API isteği İzleme'de arka uç sunucusundan 504 yanıtı gösteriyorsa 504 Ağ Geçidi Zaman Aşımı'nın nedeni arka uç sunucusudur.
  4. Yanıt süresini belirlemek için İzleme'de Hedef sunucudan alınan yanıt aşamasını tıklayın. Gösterilen örnekte geçen süre 60004 ms'dir:

    Kullanıcı arayüzünden alınan aşama ayrıntıları

    Aşama Ayrıntıları bölümünde ek bilgiler sağlanır:

    • Arka uç sunucusundan alınan 504 Ağ Geçidi Zaman Aşımı yanıtını vurgular.
    • Yanıt İçeriği bölümünde, arka uç sunucusundan gelen yanıtın tamamı gösterilir. Daha önce de belirtildiği gibi, yanıt yükünün biçimi ve içeriği arka uç sunucu uygulamasına bağlı olarak değişebilir.
    • Yanıt Başlığı > Sunucu bölümü, yanıtın nereden geldiğini gösterebilir.
  5. Analytics verilerini görüntülemek ve teşhisi onaylamak için aşağıdaki şekilde gösterildiği gibi İzleme'deki Analytics Verileri Kaydedildi aşamasını tıklayın:

    izden alınan analiz ayrıntıları

    Aşama Ayrıntıları'nın Yanıt Başlıkları bölümünde, aşağıdaki şekilde gösterildiği gibi X-Apigee-fault-code ve X-Apigee-fault-source değerleri gösterilir:

    Kullanıcı arayüzünden analiz aşaması ayrıntıları

    Bu alanlar aşağıdaki tabloda gösterilen değerleri içeriyorsa 504 hata yanıtı arka uç sunucusundan kaynaklanmaktadır:

    Yanıt Başlıkları Değer
    X-Apigee-fault-source target
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  6. Proxy zincirleme olup olmadığını kontrol edin. Arka uç sunucusunun Apigee'de başka bir proxy'yi çağırıp çağırmadığını belirlemek için şu adımları uygulayın:
    1. İstek hedef sunucuya gönderildi aşamasına geri dönün ve arka uç sunucusu ana makine takma adını görüntülemek için Curl'ü göster düğmesini tıklayın.
    2. Arka uç sunucusu ana makine takma adı, sanal ana makine takma adına işaret ediyorsa proxy zincirleme vardır. 504 Gateway Timeout hata yanıtının nedenini teşhis etmek için yukarıdaki adımları her zincirleme proxy için tekrarlayın. İstek/yanıt döngüsünün diğer aşamalarında zincirleme proxy'lerde meydana gelen 504 ağ geçidi zaman aşımları, bu oyun kitabı kullanılarak teşhis edilebilir.
    3. Arka uç sunucusu ana makine takma adı arka uç sunucusunu gösteriyorsa Çözüm bölümüne gidin.

2. Prosedür: Arka uç sunucusu API'sini doğrudan çağırma (Public Cloud ve Private Cloud kullanıcıları)

İstek Apigee Edge üzerinden yapıldığında aynı 504 Gateway Timeout yanıt davranışının karşılaşıldığını doğrulamak için arka uç sunucusunu doğrudan arayın.

  1. İsteğin bir parçası olarak arka uç sunucusuna iletmek için gereken tüm zorunlu üstbilgilere, sorgu parametrelerine ve kimlik bilgilerine sahip olduğunuzdan emin olun.
  2. Arka uç hizmeti herkese açık olarak erişilebiliyorsa curl komutunu, Postman'i veya başka bir REST istemcisini kullanabilir ve arka uç sunucusu API'sini doğrudan çağırabilirsiniz.
  3. Arka uç sunucuya yalnızca Mesaj İşleyiciler'den erişilebiliyorsa arka uç sunucu API'sini doğrudan Mesaj İşleyici'den çağırmak için curl komutunu, Postman'i veya başka bir REST istemcisini kullanın.
  4. Arka uç hizmeti 504 Ağ Geçidi Zaman Aşımı yanıtı döndürürse Çözüm bölümüne gidin.

3. Prosedür: NGINX erişim günlüklerini kontrol edin (yalnızca özel bulut kullanıcıları)

NGINX erişim günlükleri, 504 hata yanıtının arka uç sunucusu tarafından gönderilip gönderilmediğini belirlemeye yardımcı olabilir. Bu, özellikle sorun geçmişte meydana geldiyse, aralıklı olarak yaşanıyorsa veya izleme işleminde yakalanamıyorsa yararlıdır. NGINX erişim günlüklerini kontrol etmek için aşağıdaki adımları uygulayın:

  1. NGINX erişim günlüklerini görüntülemek için şu komutu kullanın:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. Etkilenen API proxy'si için 504 hata yanıtlarını kontrol edin. Sorun geçmişte yaşandıysa belirli bir zaman aralığını kontrol edebilir veya isteklerin hâlâ 504 hata yanıtıyla başarısız olup olmadığını belirleyebilirsiniz.
  3. 504 hata yanıtı varsa hata yanıtının arka uç sunucusundan kaynaklanıp kaynaklanmadığını belirleyin.
  4. Aşağıdaki şekil, hedef sunucunun neden olduğu 504 hata yanıtını gösteren bir NGINX günlük girişinin örneğidir:

    örnek nginx günlükleri

    X-Apigee-fault-source ve X-Apigee-fault-code alanları aşağıdaki tabloda gösterilen değerleri içeriyorsa 504 yanıtı arka uç sunucusundan kaynaklanıyordur:

    Yanıt Başlıkları Değer
    X-Apigee-fault-source target
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  5. Etkilenen API proxy'sini inceleyerek proxy zincirleme olup olmadığını kontrol edin. Yani arka uç sunucusu/hedef uç noktası, Apigee'de başka bir proxy'yi çağırıyor. API proxy'si proxy zincirleme kullanıyorsa 504 Gateway Timeout hata yanıtının nedenini teşhis etmek için yukarıdaki adımları zincirlenmiş her proxy için tekrarlayın. Diğer aşamalarda zincirleme proxy'lerde oluşan 504 ağ geçidi zaman aşımları, bu oyun planı kullanılarak teşhis edilebilir.
  6. Proxy zincirleme yoksa ve 504 hata yanıtı arka uç sunucusundan kaynaklanıyorsa Çözüm bölümüne gidin.

4. Prosedür: API İzleme'yi kullanma (yalnızca genel bulut kullanıcıları)

API Monitoring, hata, performans ve gecikme sorunlarını ve bunların kaynağını (ör. geliştirici uygulamaları, API proxy'leri, arka uç hedefleri veya API platformu) teşhis etmek için sorunlu alanları hızlı bir şekilde izole etmenizi sağlar.

API İzleme'yi kullanarak API'lerinizdeki 5xx sorunlarını nasıl gidereceğinizi gösteren örnek bir senaryoyu adım adım inceleyin. Örneğin, 504 durum kodlarının sayısı belirli bir eşiği aştığında yöneticileri bilgilendirecek bir uyarı ayarlayın.

Çözünürlük

Yukarıda belirtilen teşhis prosedürlerini kullanarak arka uç sunucu ekibiyle birlikte çalışabilir ve arka uç sunucusundaki sorunu düzeltebilirsiniz. Bu işlem, arka uç sunucularındaki zaman aşımlarının veya hedef sunucuların önündeki yük dengeleyicilerdeki zaman aşımlarının ayarlanmasını içerebilir.

Teşhis bilgilerini toplama

Sorun devam ederse aşağıdaki teşhis bilgilerini Apigee Destek Ekibi ile paylaşın.

Herkese açık bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Kuruluş Adı
  • Ortam adı
  • API Proxy'sinin Adı
  • 504 hata yanıtını yeniden oluşturmak için kullanılan curl komutunu tamamlayın.
  • 504 Ağ Geçidi Zaman Aşımı hata yanıtı alan API isteklerinin bulunduğu izleme dosyası

Özel bulut 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ı
  • Ortam adı
  • API Proxy Paketi
  • 504 Ağ Geçidi Zaman Aşımı hata yanıtı alan API isteklerinin bulunduğu izleme dosyası
  • NGINX erişim günlükleri
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  • Mesaj işleyici günlükleri
    /opt/apigee/var/log/edge-message-processor/logs/system.log