sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa Web Sunucuları Cloudflare 524 Timeout Hatası: Kapsamlı Çözüm R...
🌐 Web Sunucuları

Cloudflare 524 Timeout Hatası: Kapsamlı Çözüm Rehberi

Cloudflare 524 hatası, sunucu 100 saniyede yanıt vermediğinde oluşur. PHP timeout, Nginx ayarları ve sorgu optimizasyonuyla çözün.

📅 18 Aralık 2024 👁 60 görüntülenme ⏱ 5 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Cloudflare 524 Hatası Nedir?

Cloudflare 524 hatası "A Timeout Occurred" yani zaman aşımı oluştu anlamına gelir. 522 hatasından farklı olarak, bu hata Cloudflare'in kaynak sunucuya TCP bağlantısını başarıyla kurduğunu; ancak sunucunun 100 saniye (varsayılan Cloudflare timeout süresi) içinde HTTP yanıtı döndüremediğini gösterir. Bağlantı kurulmuş, istek iletilmiş fakat yanıt hiç gelmemiştir.

Bu durum genellikle kaynak sunucuda çok uzun süren işlemler nedeniyle yaşanır: karmaşık veritabanı sorguları, büyük dosya işlemleri, dışarıdan API çağrıları veya yoğun PHP hesaplamaları bunların başında gelir. E-ticaret siteleri, ERP entegrasyonları ya da büyük veri işleyen uygulamalar özellikle bu hatayla sık karşılaşır. Cloudflare Enterprise dışındaki planlarda bu 100 saniyelik limit değiştirilemez; dolayısıyla asıl çözüm sunucu tarafındaki performans sorunlarını gidermektir.


Olası Nedenler

  • Uzun süren PHP işlemleri: max_execution_time sınırını aşan betikler.
  • Yavaş veya kilitlenen veritabanı sorguları: INDEX eksikliği, deadlock veya büyük JOIN sorguları.
  • Harici API çağrıları: Üçüncü taraf servisler yanıt vermediğinde uygulama bekler.
  • Yüksek sunucu yükü: CPU/RAM yetersizliği nedeniyle işlemler kuyrukta bekler.
  • PHP-FPM veya uWSGI işçi doyması: Tüm worker'lar meşgul, yeni istekler beklemede.
  • Büyük dosya yükleme veya işleme: Video encode, görsel yeniden boyutlandırma gibi işlemler.

Çözüm Adımları

PHP Zaman Aşımı Ayarlarını Artırma

PHP'nin max_execution_time değerini artırarak uzun işlemlere izin verebilirsiniz. Ancak bu tek başına yeterli değildir; Cloudflare 100 sn limitini aşamazsınız.

# php.ini dosyasını bul
php --ini | grep "Loaded Configuration"

# max_execution_time değerini artır (örn: 300 saniye)
sudo nano /etc/php/8.2/fpm/php.ini
# max_execution_time = 300
# max_input_time = 300
# default_socket_timeout = 300

# PHP-FPM'i yeniden başlat
sudo systemctl restart php8.2-fpm

Nginx Ortamında Timeout Ayarları

Nginx'in PHP-FPM veya upstream backend ile olan timeout ayarlarını artırın.

sudo nano /etc/nginx/sites-available/siteniz.conf
location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_read_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_connect_timeout 300;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

# Proxy kullanıyorsanız
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
sudo nginx -t && sudo systemctl reload nginx

Apache Ortamında Timeout Ayarları

Apache'nin kendi timeout direktifini ve PHP timeout'unu ayarlayın.

sudo nano /etc/apache2/apache2.conf
# Timeout 300

# .htaccess ile PHP değerlerini geçersiz kılma
# php_value max_execution_time 300

sudo systemctl restart apache2

MySQL Yavaş Sorgu Tespiti ve Optimizasyon

Veritabanı sorgularınızın performansını analiz edin.

# MySQL yavaş sorgu logunu aktifleştir
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# slow_query_log = 1
# slow_query_log_file = /var/log/mysql/slow.log
# long_query_time = 2

sudo systemctl restart mysql

# Yavaş sorguları takip et
sudo tail -f /var/log/mysql/slow.log

# Gerçek zamanlı çalışan sorguları gör
mysql -u root -p -e "SHOW PROCESSLIST;"

# EXPLAIN ile sorgu analizi
# EXPLAIN SELECT * FROM buyuk_tablo WHERE kosul;

PHP-FPM Worker Sayısını Artırma

PHP-FPM pm.max_children değerini artırarak eş zamanlı işlem kapasitesini yükseltin.

sudo nano /etc/php/8.2/fpm/pool.d/www.conf
# pm = dynamic
# pm.max_children = 50
# pm.start_servers = 10
# pm.min_spare_servers = 5
# pm.max_spare_servers = 20
# pm.max_requests = 500

sudo systemctl restart php8.2-fpm

# FPM durumunu izle
sudo curl http://127.0.0.1/fpm-status?full 2>/dev/null || echo "fpm-status aktif değil"

Uzun İşlemleri Arkaplanda Çalıştırma (Queue/Job)

100 saniyelik Cloudflare limitini aşan işlemler için HTTP yanıtını hızlıca döndürün, işi bir queue sistemine atın.

# Laravel Horizon veya supervisor ile queue worker
sudo apt install supervisor -y
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
# [program:laravel-worker]
# command=php /var/www/html/artisan queue:work --sleep=3 --tries=3
# autostart=true
# autorestart=true

sudo supervisorctl reread && sudo supervisorctl update

cPanel Ortamında

cPanel kullanıcıları WHM > MultiPHP INI Editor üzerinden PHP değerlerini düzenleyebilir.

# WHM > MultiPHP INI Editor > max_execution_time = 300
# cPanel > .htaccess dosyasına:
# php_value max_execution_time 300
# php_value max_input_time 300

Özet ve Önleyici Tedbirler

  • Uzun süren işlemleri asenkron queue sistemlerine (Redis, RabbitMQ) taşıyın.
  • Veritabanı tablolarınıza uygun INDEX'ler ekleyin; EXPLAIN ile sorgu planlarını analiz edin.
  • New Relic, Blackfire veya Tideways gibi APM araçları ile yavaş kod bloklarını tespit edin.
  • Cloudflare Enterprise kullanıyorsanız proxy_read_timeout artırımı için destek talep edebilirsiniz.
  • Harici API çağrılarına timeout limiti koyun: curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  • Opcode cache (OPcache) aktif olduğundan emin olun; PHP derleme süresini azaltır.

İlgili Makaleler

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al
Etiketler: #cloudflare #nginx #5xx-hata

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.