خطای ۵۰۸ Resource Limit is Reached خطایی است که باعث ایجاد مشکل، هم برای صاحبان وبسایت و هم برای بازدید کنندگان وبسایت میشود. در این مقاله به برخی از نکاتی میپردازیم که مالک یک وبسایت میتواند به کمک آنها علت بروز این مشکلات و همچنین برخی از راهکارهای عملی رفع آنها که عمدتاً به هنگام استفاده از سرویسهای میزبانی وب اشتراکی پیش میآیند، را شناسایی کند.
ابتدا میخواهیم به مرور تاریخچه خطای ۵۰۸ Resource Limit is Reached و پیدایش آن بپردازیم. خطای ۵۰۸ برای اولین بار به عنوان کد HTTP در RFC5842 به تصویب رسید، اما به عنوان کد خطای HTTP و بهصورت “۵۰۸ – Loop Detected” در سال ۲۰۱۰ شناخته شد. در همان دوره Cloudlinux نیز برای اولین بار با هدف تامین امنیت و ثبات بیشتر برای سرورهای میزبانی وب اشتراکی راهاندازی شد. یکی از این تکنولوژیها که همزمان با آنها معرفی شد نیز “LVE” یا”Lightweight Virtual Environment” بود که یک ماژول لینوکس kernel مبتنی بر فناوری OpenVZ است که برای میزبانی وب طراحی شده و هدف اصلی آن حصول اطمینان از اینکه یک وبسایت به تنهایی نتواند یک سرور اشتراکی را دچار اختلال کند.
تکنولوژی LVE
تکنولوژی LVE به ارائه دهندگان میزبانی وب اشتراکی اجازه میدهد تا قبل از مسدود کردن حساب یک کاربر به دلیل استفاده بیش از حد مجاز، میزان منابعی را که یک وبسایت میتواند در یک سرور مصرف کند، را محدود نماید. در آن دورهای که میزبانی وب اشتراکی فاقد این تکنولوژی بود، بسیار معمول بود که یک وبسایت به دلیل افزایش شدید و ناگهانی ترافیک، سبب اختلال و از کارافتادگی کل سرور میزبانی وب شود. وقوع این اتفاق منجر به از کار افتادن سرور و تحت تاثیر قرار گرفتن تمام وبسایتهای میزبانی شده در آن سرور میشد. و به این ترتیب، این مسئله به هیچ وجه برای سایر مشتریان مشترک در سرور عادلانه نبود.
همزمان با انتشار Cloudlinux، جامعه میزبانی وب نیز به سرعت از این تکنولوژی جدید استقبال کرد، زیرا بکارگیری آن سبب ثبات بیشتر برای زیرساختهای آنها و فراهم کردن سیستم عادلانهتر برای مشتریان آنها میشد. البته این روش باعث شد محدودیتهایی که در گذشته وجود نداشت، به طور ناگهانی برای حسابهای میزبانی وب اشتراکی وب اعمال شود. یعنی باعث اعمال محدودیتهایی در میزان حافظه سیستم، پروسههای CPU و PHP میشد که یک سایت در هر لحظه از آنها استفاده میکرد. احتمالاً نزدیکترین کد که Cloudlinux میتوانست در کدهای IANA HTTP پیدا کند و با LVE مطابقت داشت و مشخص میکرد که یک وبسایت در حال استفاده از همه منابع خود است، همان کد خطای ۵۰۸ بود . این همان کدی شد که Cloudlinux هنگام استفاده از منابع بیش از حد تعریف شده توسط LVE از آن استفاده میکرد و در نتیجه از سال ۲۰۱۰ به بعد، سرورهای هاست اشتراکی بسیار پایدارتر شدند.
دلایل خطای Resource Limit is Reached چیست؟
اگر شما مالک یک وبسایت هستید و متوجه شدهاید که گاهی سایت شما خطای Resource Limit is Reached را برای بازدید کنندگان نمایش میدهد، روشهایی برای تشخیص علت بروز این خطا وجود دارد. اکثر خطاهای ۵۰۸ توسط سرورهای روی cPanel و مبتنی بر Cloudlinux ایجاد میشود. خطای ۵۰۸ عمدتاً به دلیل یکی از دو عامل زیر در سرور ایجاد میشود:
1. استفاده از حافظه Ram
درخواستهای حساب کاربری شما از میزان حافظه اختصاص یافته در سیپنل فراتر رفته است و در سرور حافظهی بالا جهت پردازش درخواستهای شما به حساب شما اختصاص داده نشده است، زیرا حافظه تخصیص داده شده به حساب شما توسط سایر درخواستهای شما اشغال شده و در حال استفاده است.
2. پردازش درخواستهای ورودی
فرایند ورودی از حد تعریف شده فراتر رفته است. درخواستهای ورودی به حساب شما از تعداد مجاز پروسههای ورودی که میتواند برای یک حساب بهصورت همزمان به وبسرور ارسال شود، فراتر رفته است.
3. محدودیتهای پردازنده
برخلاف تصور، محدودیتهای اعمالی برای CPU مستقیماً باعث خطای ۵۰۸ نمیشوند. اگر میزان استفاده از CPU در یک حساب، به حداکثر میزان تخصیص یافته
برسد، به همان صورت در حالت حداکثر باقی میماند و باعث کند شدن سایر فرایندهای در حال اجرا بر روی سرور میشود. این امر میتواند باعث افزایش میزان فرآیندهای ورودی شود و این مسئله باعث فراتر رفتن تعداد درخواستهای ورودی از حدود تعریف شده، و در نهایت بروز خطای Resource Limit is Reached شود.
اگر به سیپنل میزبانی وب اشتراکی خود دسترسی دارید و سرور شما مبتنی بر Cloudlinux است، باید این امکان برای شما وجود داشته باشد که بتوانید میزان استفاده از منابع خود را برای حساب خود بررسی کرده و در صورت بروز خطای ۵۰۸، علت آن را شناسایی کنید. گزینهای که باید در سیپنل به آن باشید، آیکون "CPU and Concurrent Connection Usage" در زیر گروه گزینههای “Metrics” است.
پس از باز کردن این صفحه، اطلاعاتی در اختیار شما قرار میگیرد که نشان میدهد سایت شما در طول ۲۴ ساعت گذشته با محدودیت منابع مواجه شده است یا خیر؟ همچنین لینکی با عنوان "details" نیز قابل مشاهده است که علت بروز خطای ۵۰۸ همراه با تعداد خطاهایی که در طول آن دوره زمانی رخ داده است به همراه اطلاعات کلی دیگر ذکر کرده است.
4. ترافیک وبسایت
بارها دیدهایم که مشتریان اقدام به تبلیغات گسترده میکنند، در حالی که کماکان در سرویس میزبانی وب اشتراکی هستند، که این مسئله نیز میتواند منجر به بروز خطای ۵۰۸ شود. اگر فعالیتی انجام میدهید که باعث افزایش بازدید وبسایت شما و ایجاد پیکهای ترافیکی شدید میشود، باید بجای استفاده از میزبانی وب اشتراکی از سرور مجازی یا اختصاصی استفاده نمایید. در غیر این صورت ممکن است سبب اتلاف سرمایهگذاری در تبلیغات و همچنین از دست دادن ترافیک و بازدیدهای مفید جذب شده ناشی از این تبلیغات شوید. اگر میخواهید در معرض بازدید گسترده در وب قرار گرفته و بازدید کنندگان بالایی جذب کنید، ابتدا باید مطمئن شوید که قبل از وقوع پیکهای واقعی ترافیک، در بستری قرار دارید که میتواند از عهده این حجم ترافیک برآید.
5. Web Crawlerها، موتورهای جستجو یا حملات DDoS
Web Crawlerها یا اسکریپتهای خودکار که در حال مرور وبسایت شما هستند اغلب میتوانند باعث کاهش ظرفیت منابع شوند. علاوه بر این، موتورهای جستجو که در حال ایندکس کردن سایت شما با سرعت بالا هستند نیز میتوانند باعث استفاده بیش از حد از منابع شما شوند. بعلاوه ممکن است بعضی اوقات بدافزارها، بهطور مداوم به صفحاتی در سایت شما دسترسی پیدا کنند که میدانند باعث مصرف بالای منابع شود و بدین ترتیب منجر به اختلال DOS در سرویسدهی سایت شما شود. در زمان بروز خطای Resource limit is Reached، میتوانید از طریق logهای مربوط به سرور، فعالیتهایی که در سایت رخ میدهد و بهطور بالقوه باعث ایجاد این مشکل میشود را همراه با آدرسهای IP مرتبط با آنها شناسایی و مسدود کنید. اگر فکر میکنید Google باعث ایجاد مشکل در هنگام ایندکس کردن سایت شما میشود، میتوانید از ابزار Webmaster Google استفاده کنید. به کمک این ابزار میتوانید سرعت پردازش و ایندکس کردن سایت خود را تنظیم کنید تا از وقوع این خطاها جلوگیری شود.
6. پلاگینها یا ضعفهای کدنویسی
گاهی اوقات پلاگینها، قالبها یا کدهایی که دارای خطا یا ضعف در کدنویسی هستند میتوانند سبب بروز خطاهای ۵۰۸ شوند. این که بتوانید فرآیندهای انجام شده در حساب خود را ببینید، اغلب به شما کمک میکند فایلهایی که سایت را در گیر میکند و از CPU یا حافظه بیش ازحد استفاده میکنند، را شناسایی کنید. این امر همچنین میتواند دلیل اصلی کندی سایت حتی در زمانی که شخصی از سایت استفاده نمیکند، نیز باشد.
درخواست های بیش از حد، پروسههای مربوط به back-end یا cron jobها بر میزان استفاده از منابع شما تاثیر میگذارد. اغلب یک فرایند بکآپگیری، یک query طولانی که در back-end یک سایت اجرا شده یا یک cron jobs در حال اجرا، مستلزم مصرف بالای حافظه است که میتواند باعث بروز خطای Resource limit is Reached شود. معمولاً وقوع این خطاها همزمان با عملیاتهای در حال اجرا رخ میدهد، که این مسئله تشخیص علت را کمی آسانتر میکند. بهخصوص اگر همزمان با اجرای یک cron jobs یا انجام عملیات back-end توسط مدیر وبسایت، با خطاهای استفاده از منابع مواجه شوید.
اگر این مشکلات را به طور مدام در سایت خود مشاهده میکنید، منطقیترین کار این است که بسته میزبانی وب اشتراکی خود را ارتقاء دهید یا به گزینههای دیگری مانند سرور مجازی یا اختصاصی فکر کنید، تا اطمینان حاصل کنید که این محدودیتها باعث ایجاد downtime در سایت شما نمیشوند. گاهی اوقات هزینهای که به خاطر اختلال در سایت خود میپردازید به مراتب بیشتر از هزینه ارتقاء به یک بسته مناسب برای وبسایت کسب و کار شما است.