504 Gateway Timeout alıyorum; hangi timeout'u kontrol etmeliyim?
Kısa cevap
TR7'nin ürettiği 504, Kurum Servisi yanıt başlıklarını Server Timeout süresi içinde göndermediğinde oluşur; kontrol edilecek değer vService'e atanmış Timeouts profilindeki Server Timeout'tur, profil atanmamışsa varsayılan Timeouts profili uygulanır ve Server Timeout 90 saniyedir. Server Timeout toplam işlem süresi değil, sunucunun yanıt vermeden sessiz kaldığı en uzun süredir; hep aynı saniyede kesilen raporlar, dışa aktarmalar ve ağır sorgular tipik belirtidir. Önce sayfanın TR7'nin "Response timeout" sayfası olduğu ve Debug Mode Logs'ta Termination State'in During response headers · Server timeout olduğu doğrulanır. Health Check profilindeki Timeout ve HTTP Request Timeout 504 üretmez; Queue Timeout 503, Connect Timeout ise bağlantı aşamasında hata üretir.
Sorun: Uzun Süren İstekler Yarıda Kesiliyor
Rapor, dışa aktarma ya da ağır sorgu gibi uzun işlemler hep yaklaşık aynı sürede 504 ile kesiliyor. 504'ü TR7'nin mi, uygulamanın mı, yoksa TR7'nin önündeki bir cihazın mı ürettiği ve hangi zaman aşımının sorumlu olduğu belirlenmelidir. Timeouts profili yalnızca HTTP ve L7 TCP vService'te bulunur ve vService'in bütün trafiğine uygulanır.
Hangi Zaman Aşımı?
| Gözlem | Sorumlu | Nerede ayarlanır |
|---|---|---|
TR7'nin "Response timeout" sayfası; Termination state During response headers · Server timeout; süre hep Server Timeout'a yakın | Server Timeout (varsayılan 90 sn) | Timeouts profili |
408 ve "Request is timeout (before completed)" sayfası; During request · Client timeout | HTTP Request Timeout (varsayılan 30 sn); 504 değildir | Timeouts profili |
503; While queued · Server timeout | Queue Timeout (varsayılan 60 sn) ve Kurum Servisinin Connection Limit değeri | Timeouts profili · Kurum Servisi |
While connecting to backend · Server timeout | Connect Timeout (varsayılan 20 sn) ve Max. Failed Connection Retries | Timeouts · vService Limits profili |
504 sayfası TR7'nin değil; TR7 kaydında During response headers · Client aborted ya da istek hiç yok | TR7'nin önündeki CDN, güvenlik duvarı ya da proxy | O cihaz |
504; Termination state Normal, Backend service = sunucunun adı | Uygulamanın ya da arkasındaki proxy'nin kendi 504'ü | Uygulama tarafı |
| WebSocket bağlantısı belli bir sürede kopuyor, HTTP kodu yok | Tunnel(Websocket) Timeout | WebSocket bağlantılarım belli bir süre sonra kopuyor; ne yapmalıyım? |
Nereden İzlenir?
| Ekran | Yol | Ne gösterir |
|---|---|---|
| HTTP Logs | Load Balancer vServices → vService → Logs & Tracking | 504 alan istekler, Backend service ve yol |
| Debug Mode Logs | Aynı sekmede (vService Debug Mode'dayken) | Termination state ve Request sekmesindeki Performance Info |
| Backend Response Time Distribution | vService → Dashboard | Kurum Servisi başına yanıt süreleri |
Çözüm: İki Yöntem
İki yöntem sırayla uygulanır: önce 504'ün kaynağı ve sorumlu zaman aşımı belirlenir, sonra Server Timeout ayarlanır.
| Durumunuz | Uygun yöntem |
|---|---|
| 504'ü kimin ürettiği ve süresi | Yöntem 1: 504'ün kaynağını belirleme |
| Server Timeout'u ayarlamak | Yöntem 2: Timeouts profili → Server Timeout |
Yöntem 1: 504'ün Kaynağını Belirleme Önerilen
- Nasıl çalışırTermination State ve kesilme süresi 504'ün kaynağını ve sorumlu zaman aşımını gösterir.
- Nerede açılır İstemci · vService düzenleme formu → Status = Debug Mode; kayıtlar Logs & Tracking → Debug Mode logs
- Gereksinim HTTP vService; yoğun trafikte Debug grubundaki Select Conditions alanından seçilen bir koşulla yalnızca sorunlu istemci kaydedilir.
- vService tipi HTTP
Adım adım yapılandırma
İstemciden kod ve süre ölçülür; süre her seferinde aynı değere yakınsa bir zaman aşımı devrededir:
curl -o /dev/null -s -w '%{http_code} %{time_total}\n' https://www.example.com/raporLoad Balancer → Load Balancer vService List ekranında vService seçilir ve Edit butonuna tıklanır.
Status alanında Debug Mode seçilir (aynı ayar Details panelindeki Debug kutusudur); yoğun trafikte Debug grubundaki Select conditions alanından sorunlu istemciyi seçen koşul seçilir (Debug Mode ne kaydeder; ne kadar süre açık tutmalıyım?).
Save butonuna tıklanır ve uzun işlem yeniden çalıştırılır.
Logs & Tracking → Debug Mode Logs ekranında 504 kaydının Termination State değeri Hangi zaman aşımı? tablosuyla eşleştirilir; Request sekmesindeki Performance Info tablosunda Tr süresinin yüksek olması, sürenin sunucuyu beklerken geçtiğini gösterir (Site yavaş; sorunun TR7'de mi, backend'de mi olduğunu nasıl anlarım?).
İnceleme bitince Load Balancer → Load Balancer vService List ekranında vService seçilir ve Edit butonuna tıklanır.
Status alanında Enabled seçilir. Debug Mode kendiliğinden kapanmaz.
Save butonuna tıklanır.
Doğrulama
504 kaydının Termination state değerine bakılır.
During response headers · Server TimeoutYöntem 2: Timeouts Profili → Server Timeout
- Nasıl çalışır Server Timeout vService'e atanmış Timeouts profilinden gelir ve vService'in bütün trafiğine uygulanır. Uzun işlem için ayrı bir profil oluşturulup yalnızca ilgili vService'e atanır.
- Nerede açılırLoad Balancer → Profiles → Timeouts · vService formu → Details → Timeout
- Gereksinim Uzun işlemin doğrudan sunucuda ölçülen gerçek süresi.
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
vService'in düzenleme formunda Details panelindeki Timeout alanına bakılır; profil seçilmemişse varsayılan değerler (Server Timeout 90 sn) kullanılır. Seçili profilin önizlemesindeki Used in sekmesi profili başka hangi vService'lerin kullandığını gösterir; ortak profil büyütülürse hepsi etkilenir.
Load Balancer → Profiles → Timeouts ekranında Add butonuna tıklanır.
Timeout Profile Name alanına ad (ör. rapor-uzun) yazılır; Server Timeout alanına işlemin sunucuda sessiz kaldığı en uzun süreden büyük bir değer (saniye, 0–60.000) girilir. Diğer alanlar varsayılan değerleriyle bırakılabilir.
Formdaki Add butonuna tıklanır.
Load Balancer → Load Balancer vService List ekranında vService seçilir ve Edit butonuna tıklanır.
Details panelinde Timeout kutusu işaretlenir ve yeni profil seçilir (vService'e nasıl eklenir). Ayrıntı: Uzun süren işlemlerde (rapor, dosya yükleme) istek neden yarıda kesiliyor; hangi timeout'u artırmalıyım?
Save butonuna tıklanır. Değişiklik kendiliğinden uygulanır; cluster'da varsayılan otomatik eşitlemeyle eş cihaza da aktarılır.
TR7'nin önündeki CDN, güvenlik duvarı ya da proxy'nin zaman aşımı TR7'nin Server Timeout değerinden kısa olmamalıdır; kısaysa istemci o cihazın 504'ünü görür.
Doğrulama
Uzun işlem yeniden çalıştırılır: curl -o /dev/null -s -w '%{http_code} %{time_total}\n' https://www.example.com/rapor
200 ve işlemin gerçek süresiSık Yapılan Hatalar
- Health check profilindeki Timeout'u artırmak. Bu değer yalnızca health check'in yanıt bekleme süresidir; trafiği etkilemez.
- Server Timeout'u toplam istek süresi sanmak. Değer sunucunun yanıt vermeden sessiz kaldığı en uzun süredir.
- HTTP request timeout'u büyütmek. Bu değer 408'i etkiler, 504'ü etkilemez.
- Bütün vService'lerin kullandığı ortak profili büyütmek. Uzun işlem için ayrı profil oluşturulur (Operasyonel en iyi uygulamalar).
- TR7'nin önündeki cihazın zaman aşımını gözden kaçırmak. O cihaz daha kısa sürede vazgeçerse 504'ü o üretir.
Dokümantasyonda nasıl yapılır
