Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X
X
X
X

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
NGINX Teknik Rehberi

NGINX 504 Gateway Timeout: Proxy ve FastCGI Zaman Aşımı Rehberi

504 Gateway Timeout, NGINX’in backend’e ulaştığı fakat belirlenen süre içinde yanıt başlığı veya veri alamadığı anlamına gelir. Bu rehber timeout ayarlarını körlemesine artırmadan PHP-FPM, veritabanı, harici API, import ve uygulama darboğazını bulmayı açıklar.

504 Gateway Timeoutupstream timed outproxy_read_timeoutFastCGISlow Query
root@sunucu:~SSH
2026/07/17 03:22:51 [error] 2190#2190: *1147 upstream timed out (110: Connection timed out) while reading response header from upstream
upstream: "fastcgi://unix:/run/php/php8.3-fpm.sock"
İstek akışıİstemci, NGINX ve backend arasındaki kopma noktası
YapılandırmaEtkin server ve location bloklarının doğrulanması
Canlı teşhisLog, socket, port ve servis kontrolleri
Güvenli uygulamaTest, kontrollü reload ve sonuç doğrulaması
01
Teknik açıklama

NGINX 504 Gateway Timeout neyi gösterir?

504, NGINX’in upstream hedefini bulduğunu ancak zamanında kullanılabilir cevap alamadığını gösterir. Kök neden yavaş PHP kodu, kilitlenen veritabanı, dış API, dolu worker havuzu veya uygulama içi sonsuz bekleme olabilir.

Logdaki 'while connecting to upstream' ifadesi bağlantı kurulma aşamasındaki; 'while reading response header from upstream' ise bağlantı kurulduktan sonra backend’in ilk yanıtını geciktirdiği sorunu gösterir.

proxy_read_timeout ve fastcgi_read_timeout toplam işlem süresini değil, iki ardışık okuma arasındaki beklemeyi sınırlar. Değeri büyütmek bazı uzun işlemleri tamamlatabilir fakat yavaş sorgu veya bloklanan worker sorununu ortadan kaldırmaz.

WordPress importu, WooCommerce raporu, büyük yedek, video işleme veya harici API çağrısı gibi uzun görevler HTTP isteği içinde çalıştırılıyorsa queue, cron veya arka plan worker mimarisine taşınması daha sağlıklıdır.

504 yalnız yoğun saatlerde oluşuyorsa PHP-FPM max_children, uygulama worker sayısı, MySQL slow query, CPU load ve disk gecikmesi birlikte incelenmelidir.

Timeout değerini artırmadan önce aynı isteğin backend’e doğrudan gönderildiğinde ne kadar sürdüğünü ölçün; süre değil bekleme nedeni optimize edilmelidir.

02
Log mesajları ve anlamları

504, upstream timed out ve backend bekleme mesajları

E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.

8 kayıt
01kritik

upstream timed out while reading response header from upstream

Anlamı: Backend bağlantıyı kabul etti ancak ilk yanıt başlığını süresinde üretmedi.

Muhtemel neden: Yavaş uygulama, DB kilidi, dolu worker veya dış API.

Aynı endpoint’i backend portuna doğrudan curl ile süre ölçerek çağırın.
02kritik

upstream timed out while connecting to upstream

Anlamı: Backend’e TCP/socket bağlantısı belirlenen sürede kurulamadı.

Muhtemel neden: Ağ, backlog, servis yoğunluğu veya ulaşılmaz hedef.

Port erişimini, SYN durumlarını ve proxy_connect_timeout değerini inceleyin.
03uyari

upstream timed out while reading upstream

Anlamı: Yanıt başladı fakat veri akışı bekleme sınırını aştı.

Muhtemel neden: Yavaş stream, büyük çıktı veya backend’in duraklaması.

Yanıt boyutu, buffering ve uygulama log zamanlarını karşılaştırın.
04uyari

server reached pm.max_children setting

Anlamı: PHP-FPM havuzunda boş worker kalmamış.

Muhtemel neden: Yetersiz max_children veya uzun süren PHP istekleri.

PHP-FPM slowlog ve process sürelerini ölçün; RAM’e göre havuzu boyutlandırın.
05uyari

Maximum execution time exceeded

Anlamı: PHP kendi çalışma süresi limitine ulaştı.

Muhtemel neden: Yavaş kod, büyük import veya dış servis beklemesi.

Fatal satırdaki fonksiyon ve sorguyu optimize edin; yalnız gerektiğinde süreyi ayarlayın.
06uyari

MySQL server has gone away

Anlamı: Uzun işlem sırasında veritabanı bağlantısı kopmuş.

Muhtemel neden: Timeout, paket boyutu, restart veya ağ sorunu.

MariaDB logu ve uygulamanın sorgu süresini aynı zaman aralığında kontrol edin.
07bilgi

504 Gateway Time-out nginx

Anlamı: Tarayıcı genel timeout sayfasını gösteriyor.

Muhtemel neden: Proxy, FastCGI veya upstream cevap gecikmesi.

NGINX error_log içindeki upstream aşamasını bulun.
08bilgi

client timed out while waiting for request

Anlamı: İstemci isteği tamamlamadan süre dolmuş.

Muhtemel neden: Yavaş upload veya istemci bağlantısı; upstream 504 ile karıştırılmamalı.

Log bağlamını ve request body sürecini ayırın.

Bu ifadeyle eşleşen kayıt bulunamadı.

03
Güvenli ilk inceleme

SSH teşhis komutları ve hangi çıktıya bakılmalı?

Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.

Origin ve backend süre ölçümü
curl -sk -o /dev/null -w 'origin connect=%{time_connect} start=%{time_starttransfer} total=%{time_total}\n' https://example.com/
curl -s -o /dev/null -w 'backend start=%{time_starttransfer} total=%{time_total}\n' http://127.0.0.1:3000/

Gecikmenin NGINX önünde mi backend içinde mi olduğunu gösterir.

Timeout logları
grep -R "upstream timed out" /var/log/nginx 2>/dev/null | tail -n 100

Hangi URL ve upstream hedefinde zaman aşımı oluştuğunu toplar.

Etkin timeout ayarları
nginx -T | grep -nE 'proxy_(connect|read|send)_timeout|fastcgi_(connect|read|send)_timeout'

Include dosyaları dâhil gerçek etkin süreleri gösterir.

Sistem yükü
uptime
vmstat 1 5
iostat -xz 1 3 2>/dev/null
free -h

CPU, RAM, run queue ve disk gecikmesini kontrol eder.

Veritabanı ve PHP süreçleri
ps -eo pid,etimes,%cpu,%mem,cmd --sort=-etimes | head -n 30
mysqladmin processlist 2>/dev/null | head -n 50

Uzun çalışan process ve sorguları görünür kılar.

Test ve reload
nginx -t && systemctl reload nginx
curl -skI --max-time 30 https://example.com/

Değişiklik sonrası güvenli reload ve sonuç testidir.

04
Barındırma ortamına göre

Ubuntu/Debian, AlmaLinux/CloudLinux ve Plesk kontrolleri

NGINX hatasının temel nedeni aynı olsa da paket yolları, servis adları, güvenlik katmanları ve sanal host yönetimi kullanılan Linux dağıtımına veya Plesk altyapısına göre değişir.

Ubuntu / Debian

NGINX 504 Gateway Timeout için systemd, paket yolu ve journald kontrolleri.

  • Önce etkin NGINX yapılandırmasını ve servis durumunu doğrulayın.
  • Domain error logu ile systemd günlüğünü aynı zaman aralığında karşılaştırın.
  • Değişiklikten önce nginx -t, ardından kesintisiz reload uygulayın.
grep -R 'upstream timed out' /var/log/nginx | tail -n 50 systemctl status nginx php8.3-fpm --no-pager journalctl -u php8.3-fpm -n 100 --no-pager

AlmaLinux / CloudLinux

NGINX 504 Gateway Timeout için SELinux, PHP-FPM pool ve RHEL tabanlı servis kontrolleri.

  • NGINX ve ilgili backend servislerinin aktif durumunu kontrol edin.
  • SELinux AVC kayıtlarını ve güvenlik katmanlarını gözden geçirin.
  • Konfigürasyon testi geçmeden servisi yeniden başlatmayın.
grep -R 'upstream timed out' /var/log/nginx | tail -n 50 systemctl status nginx php-fpm --no-pager journalctl -u php-fpm -n 100 --no-pager

Plesk Obsidian

Plesk tarafından üretilen NGINX sanal host dosyalarında nginx 504 gateway timeout kontrolü.

  • Domains > Apache & nginx Settings bölümündeki ek direktifleri inceleyin.
  • Elle oluşturulan ve Plesk tarafından üretilen dosyaları birbirinden ayırın.
  • Gerekirse yalnız ilgili domain için web yapılandırmasını yeniden oluşturun.
grep -R 'upstream timed out' /var/www/vhosts/system/example.com/logs /var/log/nginx 2>/dev/null | tail -n 50 plesk repair web example.com -n
05
Güvenli çözüm sırası

NGINX 504 Gateway Timeout çözüm sırası

Önce gecikmenin bağlantı, ilk yanıt, veri akışı veya uygulama içi işlem aşamasında olduğunu belirleyin.

1

Hata URL’sini ve süreyi ölçün

Tek endpoint mi, tüm site mi ve kaç saniyede 504 oluşuyor kaydedin.

curl -sk -o /dev/null -w '%{http_code} %{time_starttransfer} %{time_total}\n' https://example.com/islem
2

Logdaki timeout aşamasını ayırın

Connecting, reading response header veya reading upstream ifadelerini sınıflandırın.

grep 'upstream timed out' /var/log/nginx/error.log | tail -n 50
3

Backend’i NGINX olmadan ölçün

Aynı isteği doğrudan uygulama portuna gönderin.

curl -s -o /dev/null -w '%{http_code} %{time_total}\n' http://127.0.0.1:3000/islem
4

Uygulama ve veritabanı darboğazını bulun

Slowlog, uzun sorgu, API çağrısı ve dolu worker havuzunu inceleyin.

ps -eo pid,etimes,%cpu,%mem,cmd --sort=-etimes | head -n 30
5

Makul timeout değerini yalnız gerekliyse ayarlayın

İşin beklenen süresine göre en dar location bloğunda süre belirleyin.

nginx -T | grep -nE 'proxy_read_timeout|fastcgi_read_timeout'
6

Yük altında doğrulayın

Tek istek yanında eşzamanlı birkaç istekte worker ve süre davranışını gözlemleyin.

for i in {1..5}; do curl -sk -o /dev/null -w '%{http_code} %{time_total}\n' https://example.com/islem & done; wait
06
Belirtiye göre ayrım

Özel senaryolar ve karar ağacı

WordPress importunda 504

Import işlemi PHP süresi, memory, DB ve harici medya indirmesine takılabilir.

tail -f wp-content/debug.log /var/log/nginx/error.log
WooCommerce raporunda 504

Büyük tablolar ve indeks eksikliği yavaş sorgu üretebilir.

mysqladmin processlist
Büyük yüklemede timeout

Upload timeout ile request body limiti ayrı kontrol edilmelidir.

nginx -T | grep -nE 'client_max_body_size|client_body_timeout'
Harici API bekliyor

Uygulamanın dış servise verdiği timeout NGINX’ten daha uzun olabilir.

curl -v --max-time 15 https://api.example.net/health
Yalnız yoğun saatte oluşuyor

Worker havuzu, DB bağlantı limiti ve CPU doygunluğunu inceleyin.

uptime; free -h; ss -s
Container health bozuluyor

Backend restart olmadan cevap veremiyor veya readiness yanlış olabilir.

docker stats --no-stream; docker ps

Kesinlikle yapmayın

  • Her location için timeout değerlerini sınırsız veya çok yüksek yapmayın.
  • Yavaş sorguyu bulmadan yalnız PHP max_execution_time artırmayın.
  • 504 sırasında MySQL’i sebepsiz yeniden başlatmayın.
  • Uzun video/import görevlerini web isteği içinde zorla çalıştırmayın.
  • Tek bir endpoint sorunu için tüm sunucunun timeout ayarını değiştirmeyin.

Çözüm sonrası doğrulama

  • Backend doğrudan isteği beklenen sürede tamamlamaktadır.
  • NGINX error_log yeni upstream timed out kaydı üretmemektedir.
  • PHP-FPM havuzunda max_children uyarısı bulunmamaktadır.
  • Veritabanında uzun/kilitli sorgular kontrol altındadır.
  • Timeout ayarı yalnız gerekli server/location kapsamına uygulanmıştır.
07
Resmî teknik kaynaklar

NGINX ve ilgili bileşenlerin resmî dokümantasyonu

08
İç SEO içerik kümesi

İlgili NGINX hata çözümleri

09
Sık sorulan sorular

NGINX 504 Gateway Timeout hakkında merak edilenler

NGINX 504 Gateway Timeout neden olur?

NGINX backend’e ulaşır ancak belirlenen süre içinde yanıt alamaz. Yavaş PHP, veritabanı, harici API, dolu worker havuzu veya ağ gecikmesi sık nedenlerdir.

proxy_read_timeout artırmak yeterli mi?

Hayır. İşlem gerçekten uzun sürmesi bekleniyorsa yardımcı olabilir; fakat yavaş sorgu, kilit veya çöken worker sorununu yalnız gizleyebilir.

fastcgi_read_timeout neyi ölçer?

FastCGI sunucusundan iki ardışık okuma arasındaki bekleme süresini ölçer; tüm isteğin toplam süresini doğrudan sınırlamaz.

502 ve 504 farkı nedir?

502 çoğunlukla backend’e bağlanamama veya geçersiz yanıt; 504 ise bağlantı kurulmasına rağmen zamanında cevap alamama durumudur.

WordPress’te 504 nasıl teşhis edilir?

NGINX error_log, PHP-FPM slowlog, WordPress debug.log ve MySQL processlist aynı zaman aralığında karşılaştırılmalıdır.

Uzun import işlemleri nasıl çalıştırılmalı?

Mümkünse WP-CLI, cron, queue veya arka plan worker ile HTTP isteğinden bağımsız çalıştırılmalıdır.

504 yalnız yoğun trafikte oluyorsa neye bakılır?

PHP-FPM max_children, uygulama worker sayısı, DB bağlantı limiti, CPU load, RAM ve disk gecikmesi birlikte incelenmelidir.

EKA YAZILIM VE BİLİŞİM SİSTEMLERİ

Sunucunuzdaki hatayı kalıcı olarak çözelim

cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.

Sunucu Desteği Al WhatsApp
Top