خطای 504 Gateway Timeout چیست؟
خطای 504 Gateway Timeout زمانی رخ میدهد که سرور Gateway (مثل Nginx یا Reverse Proxy) در مدت زمان مشخص پاسخی از سرور بالادستی (Apache، PHP-FPM) دریافت نکند.
تفاوت با 502: در 502 پاسخ نامعتبر است، در 504 اصلاً پاسخی نمیرسد (timeout).
دلایل
اسکریپت PHP بسیار کند (کوئریهای سنگین)، کمبود RAM و CPU سرور، Timeout پایین وبسرور، و مشکل DNS (اگر از CDN استفاده شود) از دلایل اصلی هستند.
رفع
افزایش Timeout در Nginx
proxy_read_timeout 600;
proxy_connect_timeout 600;
proxy_send_timeout 600;
افزایش Timeout در PHP-FPM
request_terminate_timeout = 600
افزایش Timeout در PHP
max_execution_time = 300
افزایش Timeout در Apache
Timeout 600
ProxyTimeout 600
بهینهسازی کوئری MySQL
Slow Query Log فعال کنید:
slow_query_log = 1
long_query_time = 2
کوئریهای کند را بهینه نمایید.
افزایش RAM
اگر سرور مرتباً به محدودیت RAM میرسد، ارتقا به سرور قویتر لازم است.
504 در CloudFlare
اگر از CloudFlare استفاده میکنید، timeout کلودفلر ۱۰۰ ثانیه است. اسکریپتهایی که بیشتر طول بکشند 504 دریافت میکنند. راهحل: بهینهسازی اسکریپتها یا استفاده از Cron Job برای عملیات سنگین.
504 در وردپرس
افزونههای سنگین (بکاپ، import)، صفحات با کوئریهای زیاد و WooCommerce با محصولات فراوان میتوانند باعث 504 شوند.
انتخاب هاست وردپرس با LiteSpeed و PHP بهینه، بسیاری از خطاهای 504 را حل میکند. سرور مجازی با RAM بیشتر. کانفیگ سرور شامل بهینهسازی Timeout و MySQL.