یکی از رایجترین اشتباهات مدیران سایت این است که به محض کند شدن سایت، سراغ ارتقای هاست میروند؛ در حالی که در بخش قابلتوجهی از موارد، مشکل از کد سایت، افزونهها یا کوئریهای سنگین دیتابیس است و پلن گرانتر فقط مشکل را چند ماه به تعویق میاندازد. از طرف دیگر، بعضی سایتها ماهها با خطای 508 Resource Limit Reached و قطعیهای مقطعی دستوپنجه نرم میکنند در حالی که راهحل واقعاً ارتقای هاست است. در این مقاله یاد میگیرید نشانههای واقعی کمبود منابع را بشناسید، با اعداد و ابزار مشخص تصمیم بگیرید و پولتان را جای درستی خرج کنید.
نشانههای واقعی کمبود منابع هاست
قبل از هر چیز، این علائم را از هم تفکیک کنید. برخی نشانهها تقریباً همیشه به کمبود منابع اشاره دارند:
- خطای 508 یا 503 در ساعات پیک: اگر سایت در ساعات شلوغ (مثلاً ۱۸ تا ۲۲) خطای «Resource Limit Reached» میدهد ولی نیمهشب سالم است، به سقف
Entry Processesیا CPU رسیدهاید. - رسیدن مصرف RAM به بالای ۸۰٪ بهصورت پایدار: مصرف لحظهای بالا طبیعی است، اما اگر میانگین مصرف حافظه در طول روز بالای ۸۰٪ باشد، فضای مانور ندارید.
- خطای
Allowed memory size exhaustedدر لاگ PHP: البته ابتدا مطمئن شویدmemory_limitدرphp.iniمنطقی تنظیم شده (برای وردپرس معمولاً 256M کافی است). - پر شدن فضای دیسک یا Inode: وقتی مصرف Inode به بالای ۹۰٪ برسد، حتی با فضای خالی دیسک هم بکاپگیری و ارسال ایمیل مختل میشود.
- I/O Throttling: در پنلهایی مثل cPanel با CloudLinux، اگر نمودار
IO Usageمدام به سقف میچسبد، خواندن و نوشتن دیسک گلوگاه شده است.
در مقابل، «کندی همیشگی سایت در همه ساعات» یا «کند بودن فقط یک صفحه خاص» معمولاً نشانه مشکل نرمافزاری است، نه کمبود منابع.
کندی از هاست است یا از کد سایت؟ روش تشخیص
این مهمترین بخش ماجراست. سه آزمایش ساده انجام دهید:
۱. مقایسه فایل استاتیک با صفحه داینامیک
یک فایل متنی ساده (مثلاً test.txt) در روت هاست بسازید و زمان پاسخ آن را با صفحه اصلی سایت مقایسه کنید:
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://example.com/test.txt
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://example.com/
تفسیر نتیجه:
- فایل استاتیک زیر ۲۰۰ میلیثانیه ولی صفحه اصلی بالای ۲ ثانیه؟ مشکل از کد و دیتابیس است، نه هاست.
- حتی فایل استاتیک هم بالای ۸۰۰ میلیثانیه تا ۱ ثانیه طول میکشد؟ مشکل از سرور، شبکه یا فشار روی هاست اشتراکی است.
۲. بررسی لاگ کوئریهای کند MySQL
اگر به SSH دسترسی دارید (روی سرور مجازی یا هاستهایی که SSH میدهند)، Slow Query Log را فعال کنید:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
بعد از چند ساعت، لاگ را بررسی کنید. اگر کوئریهایی میبینید که ۳ تا ۱۰ ثانیه طول میکشند (معمولاً کوئریهای wp_postmeta بدون ایندکس یا جستوجوی افزونههای فیلتر محصول)، ارتقای هاست دردی دوا نمیکند؛ باید کوئری یا افزونه اصلاح شود.
۳. آزمایش در ساعات مختلف
با یک اسکریپت ساده cron یا سرویس مانیتورینگ رایگان، TTFB سایت را هر ۱۰ دقیقه ثبت کنید. الگوی نتیجه خودش تشخیص است:
- کندی فقط در ساعات پیک: منابع در اوج بار کم میآید → ارتقای هاست منطقی است.
- کندی یکنواخت در تمام شبانهروز: مشکل ساختاری در کد، نبود کش یا کانفیگ نامناسب است.
سنجش دقیق منابع قبل از تصمیم به ارتقای هاست
هیچوقت با «حس» تصمیم نگیرید؛ عدد جمع کنید. حداقل ۷ روز داده لازم دارید تا الگوی مصرف واقعی مشخص شود.
در هاست اشتراکی (cPanel/DirectAdmin)
در cPanel به بخش Resource Usage (لیست CloudLinux) بروید و این موارد را بررسی کنید:
- CPU Faults و Memory Faults: اگر در ۲۴ ساعت گذشته بیش از چند ده مورد Fault ثبت شده، یعنی درخواستها واقعاً به سقف خوردهاند و کاربران خطا دیدهاند.
- Entry Processes: اگر با ۲۰ کاربر همزمان به سقف میرسید، یا اسکریپتها خیلی کندند یا سقف پلن پایین است.
در سرور مجازی
چند دستور کلیدی:
# میانگین بار سیستم نسبت به تعداد هسته
uptime
# 14:32:01 up 45 days, load average: 3.85, 3.60, 3.20
# وضعیت حافظه
free -m
# فشار روی دیسک
iostat -x 5 3
قاعده سرانگشتی: اگر load average بهطور پایدار از تعداد هستههای CPU بیشتر باشد (مثلاً ۳٫۸ روی سرور ۲ هستهای)، سرور زیر فشار است. در خروجی free -m اگر مقدار available مدام زیر ۱۵٪ کل RAM باشد و swap فعالانه استفاده شود، حافظه گلوگاه است. در iostat ستون %util بالای ۸۰٪ بهصورت مداوم یعنی دیسک به سقف رسیده.
قبل از ارتقا، این کارها را انجام دهید
در بسیاری از موارد، این اقدامات مصرف منابع را ۳۰ تا ۷۰ درصد کاهش میدهند:
- فعالسازی کش صفحات: در وردپرس با افزونههایی مثل WP Super Cache یا LiteSpeed Cache (اگر وبسرور LiteSpeed است). یک صفحه کششده بهجای ۵۰ کوئری دیتابیس، صفر کوئری اجرا میکند.
- حذف افزونههای سنگین و بلااستفاده: با افزونه Query Monitor بررسی کنید کدام افزونه بیشترین کوئری و زمان را مصرف میکند.
- بهروزرسانی نسخه PHP: مهاجرت از PHP 7.4 به 8.2 یا 8.3 معمولاً ۱۵ تا ۳۰ درصد کاهش مصرف CPU به همراه دارد.
- بستن باتهای مزاحم: لاگ دسترسی را بررسی کنید؛ گاهی نیمی از بار سرور را خزندههای بیفایده تولید میکنند:
اگر چند IP خاص هزاران درخواست دارند، آنها را در فایروال یاawk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20.htaccessمسدود کنید. - بهینهسازی جداول دیتابیس: جدولهای
wp_optionsبا هزاران ردیفautoloadشده وwp_postmetaمتورم، از قاتلان اصلی RAM هستند.
اشتباه رایج: ارتقای پلکانی بیپایان
خطای رایجی که زیاد میبینیم: سایتی که مشکل کد دارد، هر ۶ ماه یک پله ارتقا میگیرد و هر بار فقط چند هفته بهبود موقت میبیند. اگر بعد از یک ارتقا، مصرف منابع ظرف یک تا دو ماه دوباره به سقف رسید بدون اینکه ترافیک واقعی سایت رشد کرده باشد، مشکل شما منابع نیست؛ نشت حافظه، کرونجابهای سنگین یا کوئریهای بدون ایندکس است. آمار بازدید Google Analytics را کنار نمودار مصرف منابع بگذارید: رشد مصرف باید متناسب با رشد ترافیک باشد.
چه زمانی ارتقای هاست تصمیم درستی است؟
وقتی این شرایط با هم برقرار باشند، با خیال راحت ارتقا دهید:
- کش و بهینهسازیهای پایه انجام شده و مصرف همچنان بالاست.
- الگوی مصرف با رشد ترافیک واقعی همخوانی دارد (مثلاً بازدید ۲ برابر شده و مصرف هم تقریباً ۲ برابر).
- در ساعات پیک، Fault یا خطای 5xx ثبت میشود.
- فایل استاتیک هم کند سرو میشود، یعنی خود زیرساخت زیر فشار است.
در انتخاب مقصد ارتقا هم دقت کنید: اگر گلوگاه شما CPU است، پلنی با هسته بیشتر بگیرید نه فضای دیسک بیشتر. اگر از هاست اشتراکی به سقف رسیدهاید و سایت درآمدزاست، مهاجرت به سرور مجازی کنترل کاملتری روی منابع و کانفیگ به شما میدهد؛ سرورنت هم در هر دو حوزه هاست اشتراکی و سرور مجازی خدمات ارائه میدهد و میتوانید پیش از مهاجرت با پشتیبانی درباره گلوگاه فعلیتان مشورت کنید.
جمعبندی
تصمیم درست درباره ارتقای هاست سه مرحله دارد: اول با آزمایش فایل استاتیک و لاگ کوئریهای کند مشخص کنید کندی از هاست است یا از کد؛ دوم حداقل یک هفته داده مصرف CPU، RAM و I/O جمع کنید؛ سوم قبل از پرداخت هزینه، کش و بهینهسازیهای پایه را انجام دهید. ارتقایی که بر اساس عدد و الگوی واقعی ترافیک انجام شود، سرمایهگذاری است؛ ارتقایی که برای فرار از دیباگ کردن انجام شود، فقط خرید زمان است.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!