خطای ۵۰۴ Gateway Timeout چیست؟
خطای ۵۰۴ Gateway Timeout زمانی رخ میدهد که یک سرور میانی (Proxy یا Gateway مثل Nginx) در انتظار پاسخ از سرور backend بوده، اما پاسخ در زمان مقرر نرسیده است. به عبارت سادهتر، سرور مقصد خیلی کُند بوده یا اصلاً پاسخ نداده. این خطا با خطای ۵۰۲ متفاوت است — در ۵۰۲ پاسخ نادرست دریافت شده، اما در ۵۰۴ اصلاً پاسخی نرسیده.
دلایل رایج بروز خطای ۵۰۴
۱. اجرای اسکریپتهای سنگین PHP
اگر یک اسکریپت PHP بیش از مدت زمان تعریفشده در max_execution_time اجرا شود، سرور آن را قطع میکند. در هاست وردپرس، این معمولاً در عملیاتهای سنگین مثل import محصولات WooCommerce یا آپدیت انبوه اتفاق میافتد.
۲. کُندی دیتابیس
کوئریهای سنگین MySQL یا دیتابیس پُر از رونوشت (Revision) میتوانند زمان پاسخدهی را به قدری بالا ببرند که Gateway timeout رخ دهد. پاکسازی رونوشتهای وردپرس میتواند کمک کند.
۳. اضافهبار سرور
وقتی سرور زیر فشار زیاد است، پاسخدهی کند میشود. با دستور top میتوانید load average سرور را بررسی کنید.
۴. مشکل شبکه بین سرورها
در معماریهای چندلایه (مثل Nginx جلوی Apache یا PHP-FPM)، مشکل شبکه داخلی بین این لایهها میتواند باعث timeout شود.
۵. افزونههای پرمصرف وردپرس
برخی افزونهها مثل افزونههای امنیتی، SEO یا بکاپ در هنگام اجرا منابع زیادی مصرف میکنند. اگر پس از نصب یک افزونه خطای ۵۰۴ ظاهر شد، آن افزونه را غیرفعال کنید.
روشهای رفع خطای ۵۰۴
روش اول: افزایش timeout در PHP
در فایل php.ini یا wp-config.php مقدار زمان اجرا را افزایش دهید:
# در php.ini
max_execution_time = 300
max_input_time = 300
# یا در wp-config.php
set_time_limit(300);
روش دوم: افزایش timeout در Nginx
اگر از Nginx به عنوان Reverse Proxy استفاده میکنید، این تنظیمات را اعمال کنید:
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;
روش سوم: بهینهسازی دیتابیس وردپرس
دیتابیس را بهینه کنید تا کوئریها سریعتر اجرا شوند:
- از طریق phpMyAdmin، گزینه Optimize Table را برای جداول وردپرس اجرا کنید.
- رونوشتهای قدیمی را حذف کنید.
- Transient های منقضی را با SQL پاک کنید:
DELETE FROM wp_options WHERE option_name LIKE '%_transient_%'
روش چهارم: استفاده از کش
نصب یک افزونه کش وردپرس مثل LiteSpeed Cache یا W3 Total Cache میتواند بار سرور را کاهش دهد و از بروز timeout جلوگیری کند.
روش پنجم: بررسی لاگها
لاگهای سرور اطلاعات دقیقی از علت timeout میدهند:
tail -f /var/log/nginx/error.log
tail -f /var/log/httpd/error_log
tail -f /home/username/logs/username.error_log
تفاوت خطاهای ۵XX
| کد | نام | توضیح |
|---|---|---|
| ۵۰۰ | Internal Server Error | خطای داخلی سرور |
| ۵۰۲ | Bad Gateway | پاسخ نادرست از سرور |
| ۵۰۳ | Service Unavailable | سرور موقتاً در دسترس نیست |
| ۵۰۴ | Gateway Timeout | پاسخ در زمان مقرر نرسید |
🚀 هاست وردپرس سریع بدون Timeout
با هاست وردپرس میهن هاستینگ، سرورهای بهینهشده برای PHP و MySQL، خطاهای Timeout را به حداقل میرسانند.
