ستاره | سرویس تکنولوژی – تصور کنید در حال جستجوی یک موضوع در وب هستید و پس از صرف زمان زیادی، بالاخره یک وبسایت را در لیست گوگل پیدا میکنید و با هزار آمال و آرزو بر روی آن کلیک میکنید، اما هنگامی که صفحه باز میشود، چشمان شما روی صفحه مانیتور میخشکد؛ “سرویس در دسترس نیست/Service Unavailable”. صبر کنید کابوس هنوز ادامه دارد…
در طرف دیگر قضیه، اگر شما مالک آن وبسایت باشید چه اتفاقی خواهد افتاد؟ مسلماً دیگر مثل سابق، طرفداران خود را نخواهید داشت، چرا که هر بار کاربران در جستجوهای خود با وبسایت شما مواجه میشوند، آن را رها کرده و به سراغ لینک دیگر خواهند رفت.
در این نوشتار قصد داریم راجع به ارور ۵۰۳ یا ۵۰۳ service unavailable صحبت کنیم دلایل رخداد و حل آن را با شما عزیزان در میان بگذاریم، پس با ما همراه باشید.
در این مطلب میخوانید:
- ارور ۵۰۳ چیست؟
- شکلهای مختلف ارور ۵۰۳
- علت ارور ۵۰۳
- چگونه از شر زامبیها و ارور ۵۰۳ خلاص شویم؟
- دیگر روشها برای برطرف کردن ارور ۵۰۳
ارور ۵۰۳ چیست؟
ارور ۵۰۳ یک کد وضعیت پاسخ (response status code) پروتکل HTTP است که نشان میدهد سرور کار خود را به درستی انجام میدهد اما در حال حاضر نمیتواند به درخواستها رسیدگی کند. از آنجایی که این ارور یک پیغامِ خطای عمومی است، بسیار دشوار است که بتوان با دقت، به علت رویداد مسئله اشاره کرد.
به زبان سادهتر، دلایلی همچون اضافه باری یا ترافیک اضافه (overloading) و اجرای اصول تعمیر و نگهداری (maintenance) بر روی سرور چنین مشکلاتی را ایجاد میکند و این پیغام به این معناست که شرایط حال حاضر یک شرایط موقتی است و پس از گذشت زمان کوتاهی بر طرف خواهد شد. البته توجه داشته باشید که برخی از سرورها در چنین وضعیتی ممکن است از ایجاد اتصال امتناع کنند و به همین دلیل پیغام دیگری را نمایش دهند.
شکلهای مختلف ارور ۵۰۳
- HTTP Server Error 503
- ۵۰۳ Error
- HTTP 503
- Http/1.1 Service Unavailable
- ۵۰۳ Service Unavailable
- Service is unavailable
- Service Unavailable – DNS Failure
علت ارور ۵۰۳
۱) برنامه نویسی ناکارآمد
گاهی اوقات ارور ۵۰۳ میتواند از برنامه نویسی ناکارآمد ناشی شود. در این صورت کدها میتوانند یک مزاحم تلقی شوند و سرعت سرور را به شدت کاهش دهند و در نهایت ارور ۵۰۳ را نمایان کنند.
برای رفع این مشکل به صورت موقتی و فوراً میبایست برنامههای روی سرور خود را یکی یکی خاموش و روشن کنید. چنانچه از یک سرور اختصاصی استفاده میکنید بهتر است به بخش مرکز کنترل اکانت “(Account Control Center (ACC” رفته و بر روی Restart Apache کلیک نمایید.
*****
توجه داشته باشید که با انجام هر دو راه حل موقتی، سرور برای دقایقی (حدود ۵ دقیقه) آفلاین خواهد شد و وبسایتها و سرویسهایی که بر روی آن سرور قرار دارند از دسترس خارج خواهند شد.
راه حل درست این است که پس از برطرف کردن بحران با شرکت برنامه نویس وبسایت خود تماس بگیرید و از آن بخواهید تا نسبت به بهینه کردن کدها اقدام کند تا دیگر با چنین مشکلی مواجه نشوید.
۲) پروسه زامبی (Zombie Process)
شاید با دیدن عنوان بالا با خود بگویید که نویسنده به طور کلی از قوه تعقل محروم است! اما باور کنید این هم یکی از دلایل نمایش ارور ۵۰۳ میباشد که هم به دلیل برنامه نویسی اشتباه و هم به دلیل ترافیک اضافه به سیستم تحمیل میشود.
هنگامی که یک برنامه در حال اجراست، آن برنامه شرح فرآیند خود را در حافظه ذخیره میکند. این توصیف فرآیند به “برنامه والد/ parent program” علامت میدهد که “فرآیندهای مولود/ Child process” یا قبل از اجرا متوقف شده است یا به درستی کار کرده است. در نهایت اگر همه چیز درست پیش برود، برنامه والد اطلاعات فرآیند مولود را جمعآوری خواهد کرد و سپس آن را به طور کامل از حافظه حذف میکند.
گاهی اوقات برنامه والد به درستی کار خودش را انجام نمیدهد و نمیتواند اطلاعات مربوط به پروسههای مولود را جمع آوری کند. در نتیجه به علت عدم وجود اطلاعات مذکور، شرح پروسهها و دادههای مولود، از حافظه به طور کلی پاک نخواهد شد و به این ترتیب پروسه زامبی شکل میگیرد.
جالب است بدانید وجود یک یا دو پروسه زامبی لطمهای به کارکرد سامانه وارد نخواهد کرد؛ ولی مشکل از جایی شروع میشود که تعداد این پروسهها افزایش پیدا میکند و با یک انباشتگی روبرو میشویم.
لازم به ذکر است که فرآیندهای زامبی از هیچ منبع سیستم استفاده نمیکنند، این در حالی است که آنها ID پردازش خود (process ID:PID) را حفظ میکنند. در سرورهای لینوکس، تعداد محدودی از این PID ها وجود دارد و هنگامی که یک فرآیند به طور کامل حذف میشود، PID قبلی برای یک فرآیند جدید در دسترس قرار میگیرد (برای جزییات بیشتر در مورد فرایندهای زامبی در یک لینوکس اینجا را مطالعه کنید). در سرورهایی که تحت سیستم عاملهای دیگر نیز کار میکنند، با افزایش پروسههای زامبی، میزان PID ها نیز کاهش مییابد تا جایی که تعداد PID ها تمام شده و در نهایت ارور ۵۰۳ نمایان میشود.
بیشتر بدانید: تفاوت ویندوز و لینوکس؛ مقایسه دو سیستم عامل رایج و محبوب
چک کردن فرآیندهای زامبی در ارتباط با ارور ۵۰۳
- گام نخست: ترمینال (terminal) در مک یا پیامواره فرمان (command prompt) در ویندوز را باز نمایید.
- گام دوم: عبارت “ssh username@web-server.com” را تایپ کنید و کلید Enter را بفشارید.
توجه: برای دسترسی به نام سرور خود (Web Server name)، وارد مرکز کنترل حساب (Account Control Center) خود شوید و در بخش “Account Summary” نام سرور خود را بیابید.
- گام سوم: کلمه عبور خود را وارد کنید و کلید Enter را بفشارید.
- گام چهارم: عبارت “ps axo pid=,stat= | awk ‘$2~/^Z/ { print }'” را تایپ کنید.
- گام پنجم: در نهایت کلید Enter را بفشارید.
این کار PID ها و وضعیت فرآیندهای زامبی موجود در سرور شما را نشان خواهد داد.
چگونه از شر زامبیها و ارور ۵۰۳ خلاص شویم؟
قبل از هر چیزی توجه داشته باشید که این مورد یک پروسه تخصصی است و حتماً میبایست آن را با کمک یک متخصص انجام دهید، اما یک روش ساده نیز وجود دارد. شما میتوانید با تایپ عبارت “kill -s SIGCHLD PID” و با جایگزینی PID پروسه والد، زامبیها را بکشید و از شر ارور ۵۰۳ رهایی پیدا کنید. برای اطلاع از روشهای دیگر میتوانید اینجا را مطالعه نمایید.
دیگر روشها برای برطرف کردن ارور ۵۰۳
کاربران توجه کنند:
- صفحهای که به آن مراجعه کردهاید را تازه سازی (رفرش/refresh) کنید. این کار را میتوانید با فشردن کلید F5 انجام دهید. همانطور که گفته شد ارور ۵۰۳ مربوط به سرور و موقتی است، پس ممکن است پس از گذشت چند لحظه مشکل حل شده باشد.
توجه داشته باشید که اگر در صفحات پرداخت هستید از انجام این کار امتناع کنید. - مودم و رایانه خود را یک مرتبه مجدداً راه اندازی (Restart) کنید.
- اگر به مدیران سایت دسترسی دارید با آنها تماس بگیرید و مراتب را گزارش دهید و راهنماییهای لازم را از آنها دریافت نمایید.
سرویس دهندههای وب و مدیران سایتها توجه کنند:
- نسخه PHP سایت خود را ارتقا دهید و آن را بهروزرسانی کنید. بدیهی است که آخرین نسخه از هر برنامه یا پلتفرم، خطا و باگهای گذشته را برطرف کرده و به یک حالت بهینه رسیده است.
- بهروزرسانی را به PHP محدود نکنید و با ارتقاء تمامی برنامهها و افزونههایی که در حال حاضر در حال استفاده از آنها هستید، کارایی سایت خود را افزایش داده و از بروز خطاهایی همچون ارور ۵۰۳ جلوگیری کنید.
- بهتر است برای جلوگیری از تحمیل بار اضافه به سرور، پیکربندی نظرات (کامنتها) را تغییر دهید و آنها را صفحه بندی کنید. شما میتوانید به راحتی عمل صفحهبندی کامنتها در وردپرس (Paginating WordPress Comments) را انجام دهید:
- به ناحیه مدیریتی وردپرس وارد شوید.
- مسیر Settings » Discussions را طی کنید.
- همانند تصویر در بخش “Break comments into pages” تعداد کامنتهایی که میخواهید در یک صفحه به نمایش در بیاید را وارد کنید.
- علاوه بر این میتوانید کامنتها را بر اساس یک پارامتر خاص دسته بندی کنید (در تصویر کامنتهای قدیمیتر (Older) ابتدا به نمایش در میآید).
- اگر از دسته مدیرانی هستید که از جوملا یا وردپرس استفاده میکنید، افزونههای بی استفاده را غیرفعال کنید و از سوی دیگر افزونههایی که فعلاً به آنها نیازی ندارید را نیز غیرفعال کنید (مثل افزونههای آمارگیر). بعضی از مواقع نیاز است شما افزونهها را یکی یکی غیرفعال کنید و ببینید که آیا مشکل برطرف شده است یا نه، چرا که تداخل افزونهها با سرور و قالب مورد استفاده شما، از دیگر دلایل پیشامد ارور ۵۰۳ است.
- گاهی دیده شده است که در CMC های رایگان (همانند وردپرس و جوملا) قالبهای در حال استفاده عامل بروز خطا هستند، پس برای ارزیابی این مورد بهتر است به طور موقت از یک قالب پیشفرض استفاده نمایید و نتیجه را بررسی کنید.
بیشتر بدانید: کاربردیترین و بهترین افزونه های وردپرس
سخن آخر
بدیهی است، هنگامی که کاربران به دنبال پاسخهایی هستند و شما با زحمات فراوان آن پاسخها را مهیا کردهاید، کاربران به شما اعتماد کرده و به سمت شما میآیند؛ اما در این بین اگر حواستان به خطاهای احتمالی (مثل ارور ۵۰۳) نباشد ممکن است فاجعه رخ دهد! “ممکن” نه، بهتر است بگوییم “مسلماً” پس هیچ گاه از اصول تعمیر و نگهداری وبسایت خود غافل نشوید. در صورت بروز هر گونه مشکل آن را با ما در میان بگذارید و پاسخ خود را در اسرع وقت دریافت کنید. همراهی شما موجب بهروزی ماست…
* تصویر ابتدایی مقاله برگرفته از: optclean.com.br