خطای 503 Service Unavailable یعنی سرور در دسترس است، اما در این لحظه نمیتواند درخواست را پردازش کند؛ چون سرویس در حالت نگهداری است، بار بیش از حد دارد یا به سقف منابع رسیده است. برخلاف خطای ۵۰۰، خطای ۵۰۳ معمولاً موقتی تعریف میشود. در این راهنما علتهای رایج ۵۰۳ در وردپرس، هاست اشتراکی و VPS و روش رفع هرکدام را توضیح میدهیم.
فهرست مطالب
خطای ۵۰۳ یعنی چه؟
کد ۵۰۳ طبق استاندارد HTTP یعنی سرور موقتاً قادر به پاسخ نیست و ممکن است بعداً بتواند. سرورها گاهی همراه آن هدر Retry-After میفرستند تا مشخص کنند کی دوباره تلاش شود. تفاوت آن با خطاهای مشابه:
- ۵۰۰: خطای غیرمنتظره در پردازش.
- ۵۰۲ و ۵۰۴: واسطه از سرویس پشتی پاسخ نگرفته یا دیر گرفته.
- ۵۰۳: سرویس بهطور آگاهانه درخواست را نمیپذیرد؛ به دلیل نگهداری، محدودیت یا اشباع.
علت ۱: حالت نگهداری وردپرس
هنگام بهروزرسانی هسته، افزونهها یا قالب، وردپرس فایل .maintenance را در ریشه سایت میسازد و پیام «Briefly unavailable for scheduled maintenance» را با کد ۵۰۳ نمایش میدهد. اگر بهروزرسانی وسط کار قطع شود، این فایل باقی میماند و سایت در حالت نگهداری گیر میکند.
راه رفع: با File Manager هاست یا SFTP، فایل .maintenance را از ریشه سایت (کنار wp-config.php) حذف کنید. سپس بررسی کنید بهروزرسانی ناقص، افزونه یا هسته را خراب نکرده باشد و در صورت نیاز آن را دوباره انجام دهید. افزونههای «حالت تعمیرات» هم ممکن است سایت را با ۵۰۳ نشان دهند؛ آنها را بررسی کنید.
علت ۲: سقف منابع در هاست اشتراکی
در هاستهای اشتراکی، هر اکانت سقفی برای CPU، RAM، I/O و بهخصوص تعداد فرایندهای همزمان (Entry Processes) دارد. وقتی تعداد درخواستهای همزمان از سقف عبور کند، درخواستهای اضافه با ۵۰۳ (یا ۵۰۸) رد میشوند. نشانهها:
- خطا در ساعات شلوغ یا هنگام هجوم رباتها رخ میدهد.
- بخش «Resource Usage» در cPanel، رسیدن به سقفها را نشان میدهد.
راه رفع: فعال کردن کش صفحه تا بیشتر درخواستها بدون PHP پاسخ داده شوند، حذف افزونههای سنگین، مسدود کردن رباتهای مزاحم و در صورت نیاز ارتقای پلن. روشها در افزایش سرعت وردپرس و نشانههای نیاز به سرور مجازی در VPS یا هاست اشتراکی.
علت ۳: بار بیش از حد سرور
روی VPS، وقتی صف PHP-FPM یا اپلیکیشن پر شود، یا محدودیت اتصال وبسرور فعال شود، ممکن است ۵۰۳ برگردد. بررسی:
uptime # بار سیستم
free -h # حافظه
sudo tail -n 50 /var/log/nginx/error.log
sudo grep -i "max_children" /var/log/php*-fpm.log
اگر محدودیت نرخ یا اتصال Nginx (limit_req و limit_conn) تعریف کردهاید، کد پیشفرض رد درخواست در آنها ۵۰۳ است. بررسی کنید کاربران واقعی به اشتباه محدود نمیشوند؛ میتوانید کد را با limit_req_status 429 تغییر دهید تا از خطای واقعی سرور قابل تشخیص باشد.
علت ۴: رباتها و حملات
خزندههای تهاجمی، رباتهای اسکن آسیبپذیری، تلاشهای ورود مکرر به wp-login.php و xmlrpc.php یا حملات لایه ۷ میتوانند ظرفیت سرور را پر کنند. در لاگ دسترسی بررسی کنید کدام IPها و مسیرها بیشترین درخواست را دارند:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
راهکارها: مسدود کردن xmlrpc در صورت عدم نیاز، محدودیت نرخ برای ورود، Fail2ban و در حملات جدیتر، CDN و WAF. توضیح حملات در حمله DDoS چیست.
علت ۵: سرویس متوقف یا در حال ریاستارت
در برخی پیکربندیها، وقتی سرویس پشتی در حال ریاستارت یا بهروزرسانی است، Load Balancer یا CDN خطای ۵۰۳ برمیگرداند. اگر خطا پس از استقرار نسخه جدید یا ریاستارت سرویسها رخ میدهد، روند استقرار را طوری تنظیم کنید که سرویس قبلی تا آماده شدن سرویس جدید پاسخ دهد.
۵۰۳ و سئو: نگهداری درست سایت
کد ۵۰۳ برای نگهداری برنامهریزیشده، کد درستی است: به موتورهای جستجو میگوید این وضعیت موقتی است و صفحات را از نتایج حذف نکنند. اما:
- اگر سایت را برای نگهداری میبندید، کد ۵۰۳ همراه هدر
Retry-Afterبرگردانید، نه کد ۲۰۰ با پیام «در حال تعمیر». - نگهداری را کوتاه نگه دارید؛ ۵۰۳ طولانیمدت (چند روز) ممکن است باعث حذف موقت صفحات از نتایج شود.
- فایل robots.txt نباید در این مدت خطای ۵۰۳ بدهد؛ این کار ممکن است خزش کل سایت را متوقف کند.
سوالات متداول
سایت وردپرس بعد از آپدیت در حالت تعمیرات گیر کرده؛ چه کنم؟
فایل .maintenance را از ریشه سایت حذف کنید و سپس بررسی کنید بهروزرسانی کامل انجام شده باشد.
تفاوت ۵۰۳ و ۵۰۸ در هاست چیست؟
۵۰۸ معمولاً در هاستهای مبتنی بر CloudLinux به معنای رسیدن به سقف منابع اکانت است؛ ۵۰۳ عمومیتر است و علتهای دیگری هم دارد.
آیا ۵۰۳ به رتبه سایت آسیب میزند؟
خطای ۵۰۳ کوتاهمدت آسیبی نمیزند و حتی کد مناسب نگهداری است. ادامه آن برای روزها میتواند اثر منفی داشته باشد.
چطور زودتر از ۵۰۳ باخبر شوم؟
با پایش خارجی سایت و هشدار فوری؛ نمونه در آموزش Uptime Kuma.
منابع کافی برای سایت پرترافیک
اگر سایت شما به سقف منابع هاست رسیده، پلنهای بالاتر هاست یا سرور مجازی تراست هاست را بررسی کنید؛ برای عیبیابی و بهینهسازی هم خدمات مدیریت سرور در دسترس است.