- خطای 503 یعنی سرور روشن است اما به دلیل بار بیش از ظرفیت یا تعمیرات، موقتاً نمیتواند درخواست را انجام دهد.
- رایجترین علتهای خطای 503 پر شدن پردازشهای PHP، سقف منابع هاست، گیر کردن وردپرس در حالت تعمیر، افزونه سنگین و ترافیک رباتها هستند.
- برای رفع خطای 503 فایل .maintenance، مصرف منابع هاست، گزارش خطاها و افزونهها را به ترتیب بررسی کنید و برای پیشگیری کش صفحه را فعال کنید.
خطای 503 یعنی سرور سایت روشن است و درخواست را دریافت کرده، اما فعلاً نمیتواند به آن جواب بدهد. این خطا با عبارت 503 Service Unavailable یا Service Temporarily Unavailable نمایش داده میشود و معمولاً دو علت دارد: سرور زیر بار بیش از ظرفیت مانده یا در حالت تعمیر و بهروزرسانی است.
خطای 503 موقتی است، ولی برای صاحب سایت هزینه دارد. هر دقیقهای که این خطا روی صفحه است، بازدیدکنندهها سایت را بسته میبینند و خیلی از آنها دیگر برنمیگردند. در این مقاله توضیح میدهیم خطای 503 دقیقاً چه معنایی دارد، چه چیزهایی باعثش میشوند و برای هر علت چه راهحلی وجود دارد.
#خطای 503 چیست؟
خطای 503 یکی از کدهای وضعیت HTTP در گروه 5xx است، یعنی گروه خطاهای سمت سرور. طبق استاندارد RFC 9110، کد 503 یعنی سرور به دلیل بار بیش از حد موقت یا تعمیرات برنامهریزیشده فعلاً نمیتواند درخواست را انجام دهد و احتمالاً بعد از مدتی مشکل برطرف میشود.
نکته مهم کلمه «موقت» است. مستندات MDN هم توضیح میدهد که سرور همراه خطای 503 میتواند هدر Retry-After بفرستد تا به مرورگر و رباتهای جستجو بگوید چه زمانی دوباره امتحان کنند. طبق همین مستندات، سرورها گاهی وقتی حافظه، پردازنده یا تعداد اتصالها به سقف میرسد، عمداً خطای 503 برمیگردانند تا از یک خرابی بزرگتر جلوگیری کنند.
خطای 503 بسته به وبسرور و هاست با این متنها دیده میشود:
- 503 Service Unavailable
- 503 Service Temporarily Unavailable
- HTTP Error 503. The service is unavailable
- Briefly unavailable for scheduled maintenance. Check back in a minute (پیام حالت تعمیر وردپرس)
#فرق خطای 503 با 500، 502 و 504 چیست؟
فرق خطای 503 با بقیه خطاهای 5xx در این است که 503 میگوید سرور سالم است و فقط الان ظرفیت یا آمادگی جواب دادن ندارد. خطاهای دیگر از خرابی یا قطع ارتباط خبر میدهند:
| کد خطا | معنی | علت رایج |
|---|---|---|
| 500 Internal Server Error | برنامه سایت هنگام اجرا خطا داده است | خطای کد، افزونه یا تنظیمات |
| 502 Bad Gateway | سرور واسط از سرور پشتی جواب نامعتبر گرفته است | از کار افتادن PHP یا سرور پشتی |
| 503 Service Unavailable | سرور فعلاً نمیتواند درخواست را انجام دهد | بار بیش از ظرفیت، حالت تعمیر، محدودیت منابع |
| 504 Gateway Timeout | سرور پشتی در زمان مقرر جواب نداده است | پردازش طولانی یا کندی پایگاه داده |
#چه چیزهایی باعث خطای 503 میشوند؟
خطای 503 تقریباً همیشه به یکی از این شش علت برمیگردد. پیدا کردن علت درست، نصف کار رفع خطاست.
#۱. ترافیک بیشتر از ظرفیت سرور
هر سرور فقط تعداد مشخصی درخواست را همزمان پردازش میکند. وقتی کمپین تبلیغاتی، حراج یا یک خبر پربازدید ترافیک را چند برابر میکند، درخواستهای اضافه جایی برای پردازش پیدا نمیکنند و سرور خطای 503 برمیگرداند. نشانهاش این است که خطا در ساعتهای شلوغ ظاهر میشود و با کم شدن بازدید خودبهخود برطرف میشود.
#۲. پر شدن پردازشهای PHP یا سقف منابع هاست
در سایتهای وردپرسی، هر درخواست به یک پردازش PHP نیاز دارد. تعداد این پردازشها در PHP-FPM با تنظیم pm.max_children محدود میشود که در مستندات PHP توضیح داده شده است. در هاست اشتراکی هم هر حساب سقف مشخصی برای پردازنده، حافظه و تعداد پردازش همزمان دارد. وقتی همه پردازشها مشغول باشند یا حساب به سقف منابع برسد، وبسرور بهجای صفحه سایت، خطای 503 نشان میدهد.
نکته اینجاست که این مشکل همیشه از ترافیک زیاد نیست. چند صفحه کند که هر کدام چند ثانیه پردازش PHP را مشغول نگه میدارند، با ترافیک معمولی هم ظرفیت را پر میکنند.
#۳. گیر کردن وردپرس در حالت تعمیر
وردپرس هنگام بهروزرسانی هسته، افزونه یا قالب یک فایل به نام .maintenance در پوشه اصلی سایت میسازد و تا پایان بهروزرسانی پیام «Briefly unavailable for scheduled maintenance» را با کد 503 نشان میدهد. اگر بهروزرسانی نیمهکاره بماند، این فایل پاک نمیشود و سایت در همان حالت میماند. مستندات وردپرس راهحلش را حذف همین فایل از پوشه اصلی سایت میداند.
#۴. افزونه یا قالب سنگین
افزونهای که در هر بارگذاری صفحه پرسوجوهای سنگین پایگاه داده میفرستد، یا با سرویس خارجی کند تماس میگیرد، پردازشهای PHP را طولانیتر مشغول نگه میدارد. اگر خطای 503 دقیقاً بعد از نصب یا بهروزرسانی یک افزونه شروع شده، احتمالاً همان افزونه مقصر است.
#۵. رباتها و درخواستهای مخرب
همه ترافیک سایت از آدمها نیست. رباتهای خزنده، ابزارهای جمعآوری اطلاعات و تلاشهای مکرر برای ورود به صفحه wp-login.php میتوانند منابع سرور را مصرف کنند. در حملات گستردهتر، سرور عملاً برای بازدیدکنندههای واقعی جایی ندارد. در این حالت گزارش دسترسی سرور (access log) پر از درخواستهای تکراری از چند آدرس مشخص است.
#۶. محدودیت درخواست یا سرویس پشتی از کار افتاده
اگر روی سرور محدودیت تعداد درخواست تنظیم شده باشد، وبسرور Nginx بهطور پیشفرض درخواستهای اضافه را با خطای 503 رد میکند. در سایتهایی که پشت توزیعکننده بار (load balancer) هستند هم، وقتی هیچ سرور سالمی پشت آن نمانده باشد، کاربر خطای 503 میبیند. تعمیرات برنامهریزیشده خود هاست هم یکی دیگر از علتهای همین گروه است.
#جدول عیبیابی خطای 503
| علت | نشانه | راهحل |
|---|---|---|
| ترافیک بیش از ظرفیت | خطا در ساعتهای شلوغ و بعد از کمپین | کش صفحه، CDN، ارتقای منابع سرور |
| پر شدن پردازشهای PHP | نمودار مصرف منابع هاست به سقف رسیده است | بهینهسازی صفحههای کند، بالا بردن pm.max_children یا ارتقای پلن |
| حالت تعمیر وردپرس | پیام Briefly unavailable for scheduled maintenance | حذف فایل .maintenance از پوشه اصلی |
| افزونه یا قالب سنگین | خطا بعد از نصب یا بهروزرسانی شروع شده است | غیرفعال کردن افزونهها و پیدا کردن مقصر |
| ربات و حمله | درخواستهای تکراری زیاد در گزارش دسترسی | مسدود کردن رباتهای مخرب، محافظت از صفحه ورود |
| محدودیت درخواست یا load balancer | خطا فقط برای بخشی از کاربران یا مسیرها | بازبینی تنظیمات محدودیت و سلامت سرورهای پشتی |
#چطور خطای 503 را رفع کنیم؟ قدمبهقدم
اگر بازدیدکننده سایت هستید، کار زیادی از دستتان برنمیآید. چند دقیقه صبر کنید و صفحه را دوباره بارگذاری کنید. اما اگر صاحب سایت هستید، این مراحل را به ترتیب جلو ببرید:
- دامنه مشکل را مشخص کنید. ببینید خطای 503 روی همه صفحهها است یا فقط چند صفحه، و برای همه کاربران است یا فقط بعضیها. خطای همهگیر معمولاً از منابع سرور است و خطای محدود از یک صفحه یا افزونه خاص.
- فایل .maintenance را بررسی کنید. با مدیر فایل هاست یا FTP به پوشه اصلی سایت بروید. اگر فایل
.maintenanceوجود دارد و بهروزرسانیای در جریان نیست، آن را حذف کنید. - مصرف منابع هاست را ببینید. در کنترلپنل هاست بخش مصرف منابع را باز کنید. اگر پردازنده، حافظه یا تعداد پردازشها به سقف رسیدهاند، علت پیدا شده است.
- گزارش خطاها را بخوانید. فایل error log وبسرور و PHP را بررسی کنید. پیامهایی مثل «server reached pm.max_children setting» مستقیم به علت اشاره میکنند.
- افزونهها را موقتاً غیرفعال کنید. اگر به پیشخوان وردپرس دسترسی ندارید، نام پوشه
wp-content/pluginsرا موقتاً عوض کنید. اگر سایت بالا آمد، نام پوشه را برگردانید و افزونهها را یکییکی فعال کنید تا مقصر پیدا شود. - ترافیک رباتها را کنترل کنید. آدرسهایی را که درخواستهای غیرعادی میفرستند مسدود کنید و برای صفحه ورود کپچا یا محدودیت تلاش بگذارید.
- با پشتیبانی هاست تماس بگیرید. اگر هیچکدام از مراحل جواب نداد، ساعت شروع خطا و آدرس صفحهها را برای پشتیبانی بفرستید. ممکن است سرور در حال تعمیر باشد یا سرویس دیگری روی همان سرور منابع را گرفته باشد.
اگر خطای 503 هر بار در ساعتهای شلوغ برمیگردد، رفع موقتی کافی نیست. فعال کردن کش صفحه معمولاً ارزانترین راه است، چون صفحههای کششده اصلاً به پردازش PHP نیاز ندارند.
#آیا خطای 503 به سئو سایت ضرر میزند؟
خطای 503 کوتاهمدت به سئو سایت ضرر جدی نمیزند، چون موتورهای جستجو آن را خطای موقت میدانند. طبق مستندات Google Search Central، گوگل وقتی با خطاهای 5xx روبهرو میشود سرعت خزش سایت را کم میکند و اگر این خطاها برای مدت طولانی ادامه پیدا کنند، آدرسهایی که مدام خطا میدهند ممکن است از نتایج جستجو حذف شوند.
به همین دلیل اگر سایت را برای تعمیر یا انتقال از دسترس خارج میکنید، صفحه «در حال تعمیر» را با کد 503 و هدر Retry-After نشان دهید. اگر همین صفحه با کد 200 نمایش داده شود، گوگل ممکن است متن «در حال تعمیر» را محتوای واقعی صفحهها بداند. در مقابل، تعمیری که چند روز طول میکشد حتی با کد درست هم ریسک دارد و بهتر است کوتاه نگه داشته شود.
#چطور از تکرار خطای 503 جلوگیری کنیم؟
- کش صفحه را فعال کنید تا بیشتر بازدیدها بدون اجرای PHP جواب بگیرند.
- قبل از کمپینهای بزرگ ظرفیت سرور را با پشتیبانی هاست هماهنگ کنید و در صورت نیاز موقتاً ارتقا دهید.
- افزونههای اضافه و سنگین را حذف کنید و صفحههای کند را بهینه کنید.
- بهروزرسانیها را در ساعتهای کمبازدید انجام دهید تا حالت تعمیر به ساعت فروش نخورد.
- رباتهای مخرب را مسدود و صفحه ورود را محافظت کنید.
- زمان پاسخ سایت را زیر نظر بگیرید. سایتی که کمکم کندتر میشود، معمولاً چند روز بعد به خطای 503 میرسد.
اگر سایت کاملاً از دسترس خارج شده و هیچ پاسخی نمیدهد، مقاله قطعی سایت و دلیل دیر خبردار شدن را بخوانید. اگر سایت فقط برای کاربران اینترنت موبایل باز نمیشود، علتش در مقاله چرا سایت با اینترنت موبایل باز نمیشود آمده است.
#خطای 503 را قبل از مشتری ببینید
خطای 503 معمولاً در بدترین زمان پیدا میشود: وسط حراج، بعد از ارسال پیامک تبلیغاتی یا وقتی صاحب سایت خواب است. اگر خبرش از پیام مشتری برسد، معمولاً بخشی از فروش آن ساعت از دست رفته است.
بینا، سرویس مانیتورینگ سایت، در دسترس بودن سایت را مرتب بررسی میکند و هر پاسخ 5xx، از جمله خطای 503، را قطعی حساب میکند. همان لحظه با تلگرام، پیامک یا ایمیل هشدار میدهد و وقتی سایت دوباره بالا آمد هم خبر میدهد. زمان شروع و پایان هر قطعی در تاریخچه رخدادها ثبت میشود، پس دقیقاً میدانید خطا چقدر طول کشیده است. نمودار زمان پاسخ سایت هم کمک میکند کند شدن تدریجی را قبل از رسیدن به خطای 503 ببینید.
#جمعبندی
خطای 503 یعنی سرور موقتاً نمیتواند جواب بدهد. رایجترین علتهایش ترافیک بیش از ظرفیت، پر شدن پردازشهای PHP، گیر کردن وردپرس در حالت تعمیر، افزونه سنگین و ترافیک رباتها هستند. با بررسی فایل .maintenance، مصرف منابع هاست، گزارش خطاها و افزونهها، در بیشتر موارد علت در کمتر از یک ساعت پیدا میشود.
رفع یکباره کافی نیست. کش صفحه، هماهنگی ظرفیت قبل از کمپینها و زیر نظر داشتن زمان پاسخ سایت، احتمال برگشتن خطای 503 را خیلی کم میکند.
پرسشهای متداول
خطای 503 چیست؟
خطای 503 یا Service Unavailable کد وضعیتی است که سرور وقتی موقتاً نمیتواند درخواست را انجام دهد برمیگرداند. علت معمولاً بار بیش از ظرفیت یا تعمیرات برنامهریزیشده است.
خطای 503 از سمت کاربر است یا سرور؟
خطای 503 از سمت سرور است. کاربر کاری جز صبر کردن و بارگذاری دوباره صفحه نمیتواند انجام دهد و رفع آن به عهده صاحب سایت یا هاست است.
خطای 503 چقدر طول میکشد؟
خطای 503 ناشی از ترافیک یا بهروزرسانی معمولاً چند دقیقه طول میکشد. اگر علت گیر کردن وردپرس در حالت تعمیر یا کمبود منابع هاست باشد، تا رفع علت ادامه پیدا میکند.
فرق خطای 503 با خطای 502 چیست؟
خطای 503 یعنی سرور سالم است اما فعلاً ظرفیت جواب دادن ندارد. خطای 502 یعنی سرور واسط از سرور پشتی جواب نامعتبر گرفته، مثلاً چون PHP از کار افتاده است.
پیام Briefly unavailable for scheduled maintenance را چطور برطرف کنم؟
پیام Briefly unavailable for scheduled maintenance را با حذف فایل .maintenance از پوشه اصلی سایت برطرف کنید. وردپرس این فایل را هنگام بهروزرسانی میسازد و اگر بهروزرسانی نیمهکاره بماند، پاک نمیشود.
آیا خطای 503 روی سئو تأثیر دارد؟
خطای 503 کوتاهمدت روی سئو تأثیر جدی ندارد، چون گوگل آن را موقتی میداند. اما اگر خطای 503 چند روز ادامه پیدا کند، گوگل سرعت خزش را کم میکند و ممکن است صفحهها را از نتایج حذف کند.
چطور زودتر از خطای 503 سایت باخبر شوم؟
با یک سرویس مانیتورینگ سایت مثل بینا، در دسترس بودن سایت مرتب بررسی میشود و به محض دیدن خطای 503 یا هر خطای 5xx دیگر، با تلگرام، پیامک یا ایمیل هشدار میگیرید.
نظرها