504 Gateway Timeout, ziyaretçiyle uygulama arasındaki ara katmanın (Nginx, bir yük dengeleyici ya da Cloudflare gibi bir CDN) arkadaki sunucudan zamanında cevap alamadığını söyleyen HTTP durum kodudur. Ara katman isteği iletmiş, beklemiş, belirlenen süre dolmuş ve cevap gelmemiştir. Yani arka sunucu büyük olasılıkla çalışıyordur ama çok yavaştır.
Bu fark önemlidir: 502'de arka sunucu bozuk cevap verir ya da bağlantıyı koparır, 504'te ise cevap vermeye çalışır ama yetişemez. Bu yüzden 504'ün çözümü çoğu zaman "neden bu kadar yavaş?" sorusunun cevabındadır.
504 hatasının en sık nedenleri
Yavaş veritabanı sorguları
En yaygın neden budur. İndekssiz büyük bir tablo, kötü yazılmış bir rapor sorgusu ya da kilitlenmiş bir tablo yüzünden sayfa saniyelerce veritabanını bekler. Ara katmanın beklemesi biter ve ziyaretçi 504 görür. MySQL'in yavaş sorgu kaydı (slow query log) hangi sorgunun sorun olduğunu gösterir.
Uzun süren betikler
Toplu e-posta gönderimi, büyük bir içe aktarma, yedek alma ya da görsel işleme gibi ağır işler web isteği içinde yapılırsa zaman aşımına düşer. Bu tür işler zamanlanmış görevlere (cron) ya da arka plan kuyruğuna taşınmalıdır.
Dış servisi beklemek
Sayfa, açılırken bir ödeme sağlayıcısına, kargo servisine ya da başka bir API'ye istek atıyorsa ve o servis yavaşsa sizin sayfanız da bekler. Dış isteklere kısa bir zaman aşımı koymak ve cevap gelmezse sayfayı yine de göstermek bu sorunu sınırlar.
Aşırı yük
Ani trafik artışı, kampanya günü ya da kötü niyetli bot trafiği sunucunun bütün işlemlerini meşgul eder. Yeni istekler sıraya girer, sıra uzar ve zaman aşımları başlar. Önbellek (sayfa önbelleği, nesne önbelleği) bu durumda en etkili önlemdir.
Zaman aşımı ayarları uyuşmuyor
Arka uygulamanın izin verdiği çalışma süresi (PHP'de max_execution_time) ara katmanın bekleme süresinden uzunsa, uygulama işini bitirmeden ara katman vazgeçer. Nginx'te fastcgi_read_timeout ve proxy_read_timeout, Apache'de Timeout ayarları bununla ilgilidir. Süreleri uzatmak geçici bir çözümdür; asıl çözüm işi hızlandırmaktır.
CDN sunucunuza ulaşamıyor
Cloudflare gibi bir CDN kullanıyorsanız 504 sayfası CDN'den geliyor olabilir. Bu durumda CDN çalışıyor ama sizin sunucunuz zamanında cevap vermiyor demektir. Sunucu kapalı, ağ sorunu yaşıyor ya da güvenlik duvarı CDN'in isteklerini yavaşlatıyor olabilir.
Adım adım çözüm
- Hatanın nerede doğduğunu bulun. Hata sayfasında Cloudflare ya da başka bir CDN'in adı geçiyorsa sorun sizin sunucunuzla CDN arasındadır. Doğrudan sunucunuzdan geliyorsa uygulamanız yavaştır.
- Hangi sayfaların etkilendiğine bakın. Yalnız arama, rapor ya da ödeme gibi belirli sayfalar 504 veriyorsa sorun o sayfaların yaptığı işte, büyük olasılıkla bir sorgu ya da dış istektedir. Bütün site 504 veriyorsa sunucu genel olarak zorlanıyordur.
- Sunucu kaynaklarını kontrol edin. İşlemci, bellek ve disk kullanımına bakın. Paylaşımlı hostingde panelde kaynak kullanım grafiği bulunur.
- Yavaş sorguları bulun. Veritabanının yavaş sorgu kaydını açın, en çok süren sorgulara indeks ekleyin ya da sorguyu yeniden yazın.
- Ağır işleri istekten çıkarın. Toplu işlemleri zamanlanmış görev ya da kuyrukla çalıştırın.
- Önbelleği açın. WordPress'te bir sayfa önbelleği eklentisi, uygulamalarda Redis gibi bir nesne önbelleği yükü ciddi ölçüde azaltır.
- Hosting firmanıza başvurun. Kaynak sınırına takılıyorsanız ya da sunucu tarafında ağ sorunu varsa destek kaydı açın; hatanın görüldüğü saatleri ve adresleri iletin.
Ziyaretçiyseniz
504 hatası neredeyse her zaman sitenin sunucusundan kaynaklanır. Sayfayı bir süre sonra yenilemek dışında yapabileceğiniz pek bir şey yoktur. Formu gönderirken ya da ödeme yaparken 504 aldıysanız işlemi tekrarlamadan önce işlemin tamamlanıp tamamlanmadığını kontrol edin; bazen arka sunucu işi bitirir, yalnız cevap size ulaşmaz.
502, 503 ve 504 farkı
| Kod | Ne oldu? |
|---|---|
| 502 Bad Gateway | Arka sunucu bozuk cevap verdi ya da bağlantıyı kopardı (502 rehberi) |
| 503 Service Unavailable | Sunucu isteği bilerek reddetti: bakım, aşırı yük, kaynak sınırı (503 rehberi) |
| 504 Gateway Timeout | Arka sunucu çalışıyor ama zamanında cevap vermedi |
Yavaşlığı kesintiye dönüşmeden görün
504 hatası genellikle bir anda gelmez: sayfalar önce yavaşlar, sonra zaman aşımları başlar. domainizle.tr ile ana sayfanızın yanında ödeme, giriş ya da API gibi önemli adresleri URL izleme ile izleyebilirsiniz. Her kontrolde yanıt süresi kaydedilir ve grafikte görünür; adres zaman aşımına düştüğünde ya da beklenmeyen bir HTTP kodu döndürdüğünde ve düzeldiğinde haber verilir.
Sık sorulan sorular
504 hatası kendiliğinden düzelir mi?
Anlık bir yük artışından kaynaklanıyorsa yük azalınca düzelir. Yavaş bir sorgu ya da ağır bir işlem nedeniyle oluyorsa aynı sayfa her açıldığında tekrar eder ve kalıcı çözüm gerekir.
Zaman aşımı süresini uzatmak sorunu çözer mi?
Hatayı gizler ama yavaşlığı çözmez. Ziyaretçi yine uzun süre bekler ve sunucu aynı anda daha fazla işlem tutar; yoğun anlarda bu durum sorunu büyütebilir. Süreyi uzatmak yerine işin kendisini hızlandırmak gerekir.
Cloudflare 504 hatası veriyor, sorun Cloudflare'de mi?
Genellikle hayır. Cloudflare'in 504 sayfası, Cloudflare'in sizin sunucunuza ulaştığını ama zamanında cevap alamadığını söyler. Sorunun kaynağı çoğu zaman sizin sunucunuzdur.
WordPress sitemde 504 alıyorum, ne yapmalıyım?
Önce son eklediğiniz ya da güncellediğiniz eklentiyi devre dışı bırakın; bazı eklentiler her sayfa açılışında dış servislere istek atar. Sonra bir sayfa önbelleği kurun ve zamanlanmış görevleri (WP-Cron) gerçek bir sunucu cron'una taşıyın.
Sitenizin yavaşlayıp zaman aşımına düştüğünü müşterinizden öğrenmeyin. Hesap oluşturun, sitenizi ve önemli adreslerinizi ekleyin, sorun olduğunda ilk siz haberdar olun.
Bunu her ay elle kontrol etmeyin
domainizle.tr domain ve SSL bitiş tarihlerini kendiliğinden okur, sitenizin açık olup olmadığını düzenli yoklar; süre dolmadan önce kademeli olarak ve site kapandığında haber verir. Kurulum ya da sunucu erişimi gerekmez.
1 ay ücretsiz deneyin Nasıl çalışır