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 "Ağ Geçidi Zaman Aşımı" mesajıyla birlikte 504 HTTP durum kodunu alır.

Bu hata yanıtı, API çağrısı yürütülürken istemcinin Apigee Edge'den veya arka uç sunucudan zamanında yanıt alamadığını belirtir.

Hata Mesajı

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

HTTP/1.1 504 Gateway Timeout

Bu kodun ardından, aşağıdakine benzer 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ının nedeni nedir?

Apigee Edge aracılığıyla yapılan bir API isteği için tipik yol, aşağıdaki resimde gösterildiği gibi İstemci -> Yönlendirici -> Mesaj İşleyici -> Arka Uç Sunucusu şeklindedir:

API istek yolu

İstemci uygulaması, yönlendiriciler ve Mesaj İşleyicileri uygun zaman aşımı değerleriyle yapılandırılmıştır. Apigee Edge, zaman aşımı değerlerine göre her API isteğine belirli bir süre içinde yanıt verilmesini bekler. Yanıt, belirtilen süre içinde alınmazsa 504 Ağ Geçidi Zaman Aşımı 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 Sorun Giderme Talimatları:
Arka Uç Sunucusu 504 Ağ Geçidi Zaman Aşımı ile yanıt veriyor Arka uç sunucusu zaman aşımına uğrar ve Mesaj İşleyici'ye 504 Ağ Geçidi Zaman Aşımı yanıtı döndürür. Edge'de Özel ve Herkese Açık Bulut Kullanıcıları

Arka Uç Sunucusu 504 Ağ Geçidi Zaman Aşımı ile yanıt veriyor

Arka uç sunucusu 504 Ağ Geçidi Zaman Aşımı şeklinde bir HTTP yanıt koduyla yanıt verebilir.

Teşhis

Bu bölümde, 504 Ağ Geçidi Zaman Aşımının doğru şekilde nasıl teşhis edileceği açıklanmaktadır. Hem Özel hem de Herkese Açık Bulut kullanıcılarına yönelik prosedürler listelenir.

1. Prosedür: Trace'i Kullanma (Özel ve Herkese Açık Bulut kullanıcıları)

  1. Etkilenen API için Apigee kullanıcı arayüzünde Trace'i etkinleştirin.
  2. Arka uç sunucusuna bir istek gönderin.
  3. Başarısız API isteği Trace'te 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 Trace'te Hedef sunucudan alınan yanıt aşamasını tıklayın. Gösterilen örnekte geçen süre 60.004 ms'dir:

    kullanıcı arayüzünden 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ü, arka uç sunucusundan gelen yanıtın tüm gövdesini görüntüler. Daha önce belirtildiği gibi, yanıt yükünün biçimi ve içeriği arka uç sunucusu uygulamasına göre farklılık gösterebilir.
    • Yanıt Başlığı > Sunucu bölümünde yanıtın kaynağı gösterilebilir.
  5. Analytics verilerini görüntülemek ve teşhisi onaylamak için Trace'te, aşağıdaki şekilde gösterildiği gibi Kaydedilen Analiz Verileri aşamasını tıklayın:

    izdeki analiz ayrıntıları

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

    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ç sunucudan gelir:

    Yanıt Başlıkları Değer
    X-Apigee-fault-source hedef
    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 çağırıp çağırmadığını belirlemek için şu adımları uygulayın:
    1. Hedef sunucuya gönderilen istek aşamasına geri dönün ve arka uç sunucusu ana makine takma adını görüntülemek için Show Curl (Curl'yi Göster) düğmesini tıklayın.
    2. Arka uç sunucusu ana makine takma adı bir sanal ana makine takma adına işaret ediyorsa proxy zincirleme geçerli olur. 504 Ağ Geçidi Zaman Aşımı hata yanıtının nedenini belirlemek amacıyla zincirlenmiş her proxy için yukarıdaki adımları tekrarlayın. Zincirli proxy'lerde istek/yanıt döngüsünün diğer aşamalarında oluşan 504 ağ geçidi zaman aşımları bu başucu kitabı kullanılarak teşhis edilebilir.
    3. Arka uç sunucusu ana makine takma adı, arka uç sunucusuna işaret ediyorsa Çözüm bölümüne geçin.

2. Prosedür: Arka uç sunucusu API'sini doğrudan çağırın (Herkese Açık ve Özel Bulut kullanıcıları)

İstek Apigee Edge üzerinden yapıldığında karşılaşılan 504 Ağ Geçidi Zaman Aşımı yanıt davranışını onaylamak için doğrudan arka uç sunucusunu çağırın.

  1. İsteğin bir parçası olarak arka uç sunucusuna iletmek için gereken tüm gerekli üst bilgilere, sorgu parametrelerine ve kimlik bilgilerine sahip olduğunuzdan emin olun.
  2. Arka uç hizmeti herkesin erişimine açıksa curl komutunu, Postman'ı veya başka bir REST istemcisini kullanabilir ve arka uç sunucu API'sini doğrudan çağırabilirsiniz.
  3. Arka uç sunucusuna yalnızca Mesaj İşleyicilerinden erişilebiliyorsa arka uç sunucu API'sini doğrudan Mesaj İşleyici'den çağırmak için curl komutunu, Postman'ı 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 geçin.

3. Prosedür: NGINX Erişim Günlüklerini kontrol edin (yalnızca Private Cloud 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 oluşmuşsa, aralıklıysa veya Trace'de yakalanamıyorsa kullanışlıdır. NGINX erişim günlüklerini kontrol etmek için şu adımları uygulayın:

  1. Şu komutu kullanarak NGINX erişim günlüklerini görüntüleyin:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. Etkilenen API proxy'si için 504 hata yanıtları olup olmadığını kontrol edin. Sorunun geçmişte oluşup oluşmadığını belirli bir dönem kontrol edebilir veya isteklerin hâlâ 504 hatası yanıtıyla başarısız olup olmadığını belirleyebilirsiniz.
  3. 504 hata yanıtları varsa hata yanıtının arka uç sunucusundan kaynaklanıp kaynaklanmadığını belirleyin.
  4. Aşağıdaki şekilde, hedef sunucunun neden olduğu bir 504 hata yanıtını gösteren NGINX günlük girişi örneği gösterilmektedir:

    ö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ç sunucudan gelir:

    Yanıt Başlıkları Değer
    X-Apigee-fault-source hedef
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  5. Etkilenen API proxy'sini inceleyerek proxy zincirlemesini kontrol edin. Yani arka uç sunucusu/hedef uç nokta, Apigee'de başka bir proxy çağırıyordur. API proxy'sinde proxy zincirleme kullanılıyorsa 504 Ağ Geçidi Zaman Aşımı hata yanıtının nedenini belirlemek amacıyla zincirleme proxy'ler için yukarıdaki adımları tekrarlayın. Diğer aşamalarda zincirleme proxy'lerde gerçekleşen 504 ağ geçidi zaman aşımları bu başucu kitabı kullanılarak teşhis edilebilir.
  6. Proxy zincirleme yoksa ve 504 hata yanıtı arka uç sunucusundan geliyorsa Çözüm'e geçin.

4. Prosedür: API Monitoring'i Kullanma (yalnızca Herkese Açık Bulut kullanıcıları)

API Monitoring; hata, performans ve gecikme sorunlarını ve bunların kaynaklarını (ör. geliştirici uygulamaları, API proxy'leri, arka uç hedefleri veya API platformu) teşhis etmek için sorunlu alanları hızla izole etmenize olanak tanır.

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

Çözünürlük

Yukarıda özetlenen teşhis prosedürlerini kullanarak arka uç sunucudaki sorunu düzeltmek için arka uç sunucu ekibiyle çalışabilirsiniz. Bu, arka uç sunucularındaki zaman aşımlarını veya hedef sunucuların önündeki yük dengeleyicilerde bulunan zaman aşımlarını ayarlamayı içerebilir.

Teşhis Bilgilerini Toplama

Sorun devam ederse aşağıdaki teşhis bilgilerini Apigee Desteği 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 Adı
  • 504 hata yanıtını yeniden oluşturmak için kullanılan tam curl komut
  • 504 Ağ Geçidi Zaman Aşımı hata yanıtı alan API isteklerinin bulunduğu izleme dosyası

Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Başarısız istekler için gözlemlenen tam hata mesajı
  • 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 İşleyici günlükleri
    /opt/apigee/var/log/edge-message-processor/logs/system.log