محدودیت منابع هاست لینوکس چیست؟ راهنمای CPU، RAM، I/O، EP و inode

محدودیت منابع هاست لینوکس را با نمودارهای cPanel و CloudLinux عیب‌یابی کنید؛ تفاوت CPU، RAM، I/O، IOPS، EP، NPROC و inode و زمان ارتقا را بیاموزید.

دسته‌بندیمیزبانی وبنویسندهadminتاریخ انتشارزمان مطالعه۲۷ دقیقه

پاسخ کوتاه: محدودیت منابع هاست لینوکس یعنی برای هر حساب میزبانی سقف‌هایی روی توان پردازنده، حافظه فیزیکی، سرعت و تعداد عملیات دیسک، تعداد پردازه‌ها، درخواست‌های هم‌زمان و گاهی تعداد inode تعریف می‌شود. رسیدن به هر سقف نشانه و راه‌حل متفاوتی دارد: محدودیت CPU یا I/O معمولاً سایت را کند می‌کند، عبور از حافظه می‌تواند پردازه را متوقف کند و پرشدن Entry Processes ممکن است خطای 508 ایجاد کند. برای تشخیص درست باید در cPanel بخش Resource Usage را باز کنید، ستون Fault و نمودار زمان رخداد را با لاگ خطا، ترافیک، کرون‌جاب و فعالیت‌هایی مانند بکاپ یا ایمپورت تطبیق دهید؛ سپس تصمیم بگیرید مشکل با بهینه‌سازی حل می‌شود یا ظرفیت بیشتری لازم است.

این راهنما یک معرفی سطحی از CPU و RAM نیست. هدف آن است که وقتی سایت کند شده، خطای 508 یا 503 دیده‌اید، عملیات بکاپ طولانی است یا ذخیره فایل جدید شکست می‌خورد، بتوانید از روی شواهد مسیر عیب‌یابی را انتخاب کنید. مقدار دقیق هر محدودیت، امکانات پنل و سیاست ارتقا بین سرویس‌ها متفاوت است؛ بنابراین هیچ عدد ثابتی را به‌عنوان ویژگی یک پلن فرض نمی‌کنیم. مشخصات جاری هاست لینوکس و پاسخ پشتیبانی سرویس، مرجع نهایی ظرفیت و امکانات همان محصول است.

فهرست مطالب

  • محدودیت منابع در CloudLinux و cPanel چگونه کار می‌کند؟
  • روش خواندن Usage، Limit و Fault در Resource Usage
  • تفاوت CPU، PMEM، I/O، IOPS، Entry Processes، NPROC و inode
  • رابطه محدودیت‌ها با خطاهای 508، 503، 504 و 500
  • روال عیب‌یابی از زمان رخداد تا یافتن افزونه، پردازه یا عملیات سنگین
  • سناریوهای وردپرس، ووکامرس، بکاپ، ایمپورت و ربات
  • زمان مناسب بهینه‌سازی، ارتقای هاست یا مهاجرت به سرور مجازی
  • چک‌لیست خرید هاست لینوکس و پرسش‌های متداول

محدودیت منابع هاست لینوکس چیست؟

در هاست اشتراکی چند حساب روی یک زیرساخت فعالیت می‌کنند. CloudLinux با محیط LVE مصرف هر حساب را جدا می‌کند و مدیر سرور می‌تواند برای منابع مختلف سقف تعریف کند. هدف این جداسازی آن است که مصرف غیرعادی یک سایت تمام ظرفیت سرور را در اختیار نگیرد و روی سایر حساب‌ها اثر مستقیم نگذارد. از دید صاحب سایت، نتیجه به شکل نمودار مصرف، مقدار Limit و شمارنده Fault دیده می‌شود. Fault یعنی در آن بازه مصرف به سقف تعریف‌شده رسیده یا از آن عبور کرده است؛ اما Fault به‌تنهایی علت نرم‌افزاری را نمی‌گوید.

محدودیت منابع با حجم فضای هاست یا ترافیک ماهانه یک چیز نیست. ممکن است فضای زیادی خالی باشد ولی CPU در زمان ساخت صفحه پویا به سقف برسد. ممکن است مصرف CPU پایین باشد اما صدها هزار فایل کوچک inode را پر کنند. ممکن است سرعت دیسک محدود شود و عملیات بکاپ آهسته پیش برود، در حالی که حافظه کاملاً عادی است. به همین دلیل خرید پلن فقط براساس گیگابایت فضا، تصویر ناقصی از نیاز سایت می‌دهد.

این مقاله با نوشته مفهوم منابع هاست و تأثیر آن بر عملکرد سایت تفاوت دارد. آن نوشته منابع را معرفی می‌کند؛ اینجا روی تشخیص Fault، ارتباط نمودار با خطا و تصمیم عملی تمرکز داریم. اگر هنوز با تعریف کلی منابع آشنا نیستید، ابتدا آن مطلب را مرور کنید و سپس با این راهنما وارد عیب‌یابی شوید.

نمودار قرمز پاسخ نهایی نیست؛ فقط زمان و نوع محدودیتی را نشان می‌دهد که باید با لاگ و رفتار واقعی سایت تطبیق داده شود.

اصل تشخیص محدودیت منابع

Resource Usage در cPanel چه چیزی نشان می‌دهد؟

در سرورهایی که CloudLinux و افزونه مرتبط فعال است، cPanel می‌تواند رابط Resource Usage را در بخش Metrics نمایش دهد. نام بعضی گزینه‌ها با نسخه و تنظیمات میزبان متفاوت است. معمولاً یک نمای خلاصه از رخداد محدودیت و یک نمای جزئی شامل نمودارها یا جدول مصرف در دسترس است. CloudLinux Manager نیز در جدول Current Usage سه مفهوم مهم Usage، Limit و Fault را کنار منابعی مانند CPU، I/O، IOPS، NPROC، EP و PMEM نشان می‌دهد. نمایش inode نیز وابسته به فعال‌بودن این محدودیت برای حساب است.

Usage مصرف اندازه‌گیری‌شده در همان نمونه یا بازه است. Limit سقفی است که برای حساب تعریف شده و Fault تعداد دفعات نقض سقف را نشان می‌دهد. میانگین پایین لزوماً نبود مشکل را ثابت نمی‌کند؛ یک جهش کوتاه می‌تواند چند خطای کاربر ایجاد کند اما در نمودار ساعتی کوچک به نظر برسد. در مقابل، نزدیک‌شدن Usage به Limit بدون Fault ممکن است فقط نشان دهد سایت از ظرفیت خود استفاده کرده و هنوز محدود نشده است.

برای تحلیل، بازه‌ای را انتخاب کنید که خطا واقعاً اتفاق افتاده است. ساعت گزارش پنل، منطقه زمانی سایت و زمان ثبت‌شده در لاگ را یکسان کنید. اگر کاربر ساعت ۱۴:۱۰ خطا دیده اما نمودار روزانه را بررسی می‌کنید، جزئیات لازم از بین می‌رود. ابتدا بازه دقیقه‌ای یا ساعتی، سپس روند روزانه و در نهایت الگوی چندروزه را ببینید. این ترتیب هم علت لحظه‌ای را پیدا می‌کند و هم نشان می‌دهد مشکل تکرارشونده است یا استثنایی.

ستون یا نمودارمعنابرداشت نادرست رایجپرسش درست
Usageمصرف ثبت‌شده در بازههر مقدار بالا یعنی سایت خراب استآیا مصرف با فعالیت واقعی همان زمان هم‌خوان است؟
Limitسقف تنظیم‌شده برای حساباین عدد در همه شرکت‌ها یکسان استسقف همین پلن و روش اندازه‌گیری آن چیست؟
Faultرسیدن به سقف یا نقض محدودیتFault نام افزونه مقصر را مشخص می‌کنددر همان زمان کدام درخواست یا پردازه فعال بوده؟
Averageمیانگین مصرف در بازهمیانگین پایین یعنی هیچ جهشی نبودهآیا Max و بازه ریزتر نیز بررسی شده‌اند؟
Maxبیشترین مصرف مشاهده‌شدهبیشینه همیشه نیاز به ارتقا دارداین قله چند بار و در چه عملیاتی تکرار شده؟

CPU یا SPEED؛ وقتی پردازنده به سقف می‌رسد

CloudLinux محدودیت توان پردازنده را با SPEED یا سهم CPU کنترل می‌کند. CPU اجرای PHP، ساخت صفحه پویا، پردازش کوئری، فشرده‌سازی، اسکن امنیتی، تولید تصویر و بسیاری از کارهای پس‌زمینه را انجام می‌دهد. وقتی مصرف به سقف می‌رسد، کار بیشتر باید در سهم زمانی محدود انجام شود و نتیجه معمولاً افزایش زمان پاسخ و صف‌شدن کارهاست. یک Fault پردازنده نمی‌گوید سخت‌افزار سرور ضعیف است؛ فقط می‌گوید حساب در آن لحظه به سهم تعریف‌شده رسیده است.

علت رایج می‌تواند موج بازدید واقعی، ربات پرتقاضا، افزونه‌ای با حلقه پردازشی، کوئری ناکارآمد، cron هم‌زمان، ساخت thumbnail یا اسکن بدافزار باشد. ابتدا زمان Fault را با access log و cron تطبیق دهید. سپس مسیرهای پرتکرار، درخواست‌های کند و پردازه‌های PHP را بررسی کنید. غیرفعال‌کردن تصادفی افزونه‌ها روی سایت اصلی بدون نسخه پشتیبان و محیط آزمایش، روش امنی نیست؛ تغییر را مرحله‌ای و قابل‌بازگشت انجام دهید.

اگر CPU فقط هنگام عملیات مدیریتی نادر مانند ایمپورت یا به‌روزرسانی بزرگ Fault دارد، زمان‌بندی و تقسیم کار می‌تواند کافی باشد. اگر در ساعات عادی و با ترافیک معمول مرتب به سقف می‌رسد، ابتدا کش، نسخه PHP سازگار، کوئری‌ها و افزونه‌ها را بررسی کنید. پس از بهینه‌سازی، اگر مصرف سالم کسب‌وکار همچنان ظرفیت را پر می‌کند، ارتقای پلن تصمیم منطقی‌تری است.

پردازنده و ماژول‌های حافظه سرور در آستانه مصرف منابع هاست
CPU و حافظه دو گلوگاه متفاوت‌اند و باید با نمودار Fault جداگانه بررسی شوند.

PMEM؛ محدودیت حافظه فیزیکی حساب

PMEM در CloudLinux حافظه فیزیکی مصرف‌شده توسط پردازه‌های محیط کاربر را محدود می‌کند و براساس مستندات رسمی می‌تواند حافظه اشتراکی و بخشی از cache دیسک را نیز دربر بگیرد. اگر حافظه کافی نباشد، سیستم ابتدا می‌تواند cache قابل‌آزادسازی را پس بگیرد؛ اگر این کار کافی نباشد، بعضی پردازه‌های داخل LVE متوقف می‌شوند و شمارنده PMEM Fault افزایش می‌یابد. پیامد ممکن است خطای 500 یا 503، شکست عملیات PHP یا قطع یک job باشد.

PMEM را با PHP memory_limit اشتباه نگیرید. memory_limit سقف حافظه یک اجرای PHP است، در حالی که PMEM مصرف تجمعی پردازه‌های حساب را دربر می‌گیرد. ممکن است هر درخواست زیر memory_limit باشد اما چند درخواست هم‌زمان مجموعاً PMEM را پر کنند. عکس آن نیز ممکن است: یک اسکریپت به memory_limit خودش برخورد کند، در حالی که نمودار PMEM حساب Fault ندارد. لاگ PHP و نمودار CloudLinux باید کنار هم بررسی شوند.

افزونه‌های صفحه‌ساز، گزارش‌های بزرگ ووکامرس، import فایل، پردازش تصویر، جست‌وجوی سنگین و چند worker هم‌زمان می‌توانند حافظه را بالا ببرند. افزایش کورکورانه memory_limit همیشه راه‌حل نیست؛ ممکن است فقط اجازه دهد هر درخواست حافظه بیشتری بگیرد و PMEM سریع‌تر پر شود. ابتدا مشخص کنید مصرف متعلق به یک پردازه بزرگ است یا تعداد زیادی پردازه هم‌زمان. سپس حجم دسته‌ها، concurrency و افزونه یا endpoint عامل را اصلاح کنید.

I/O و IOPS؛ دو محدودیت متفاوت دیسک

I/O در CloudLinux نرخ جابه‌جایی داده دیسک را محدود می‌کند و با واحد سرعت سنجیده می‌شود. IOPS تعداد عملیات خواندن و نوشتن در ثانیه را کنترل می‌کند. یک فایل بزرگ ممکن است I/O زیادی بسازد، در حالی که هزاران فایل کوچک می‌توانند IOPS را بالا ببرند. به همین دلیل صرفاً دیدن عبارت «دیسک» برای تشخیص کافی نیست. باید بدانید گلوگاه حجم انتقال است یا تعداد عملیات.

مستندات CloudLinux توضیح می‌دهد وقتی I/O به سقف می‌رسد، پردازه‌ها throttle می‌شوند و آهسته‌تر ادامه می‌دهند؛ این محدودیت مربوط به دیسک است و شبکه را اندازه نمی‌گیرد. در IOPS نیز عملیات خواندن و نوشتن تا بازه بعدی منتظر می‌ماند. نتیجه از دید کاربر می‌تواند کندی، طولانی‌شدن بکاپ، تأخیر در استخراج فایل، کندشدن نصب افزونه یا پاسخ دیرهنگام دیتابیس باشد؛ اما هر کندی دیسک الزاماً به معنی خرابی SSD یا NVMe نیست.

بکاپ محلی، فشرده‌سازی archive، اسکن فایل، تولید cache، پاک‌سازی انبوه، import دیتابیس و افزونه‌های آماری می‌توانند I/O یا IOPS را بالا ببرند. زمان اجرای آن‌ها را با نمودار تطبیق دهید. اگر job قابل‌زمان‌بندی است، آن را به ساعت کم‌ترافیک منتقل و هم‌زمانی چند job را حذف کنید. اگر عملیات ضروری و پرتکرار است، ساختار فایل، دیتابیس و ظرفیت پلن باید بازنگری شود.

جریان خواندن و نوشتن دیسک در کنار تعداد زیادی فایل و پوشه روی هاست لینوکس
I/O سرعت انتقال دیسک، IOPS تعداد عملیات و inode ظرفیت نگهداری فایل‌ها و پوشه‌ها را توصیف می‌کند.

چرا سرعت شبکه با I/O یکی نیست؟

I/O این بخش معمولاً به خواندن و نوشتن دیسک اشاره دارد، نه ترافیک اینترنت. دانلود فایل از سایت هم به دیسک و هم به شبکه وابسته است، اما نمودار I/O فقط بخش ذخیره‌سازی را نشان می‌دهد. اگر فایل از cache حافظه تحویل شود، ممکن است ترافیک شبکه بالا باشد ولی I/O کم بماند. اگر بکاپ روی همان دیسک ساخته شود، I/O بالا می‌رود حتی پیش از آنکه فایل به مقصد دور منتقل شود.

روش تشخیص عملیات حجیم و عملیات ریز

اگر I/O بالا و IOPS متوسط است، انتقال فایل بزرگ، بکاپ یا export محتمل‌تر است. اگر IOPS بالا ولی نرخ انتقال چندان زیاد نیست، تعداد فراوان فایل کوچک، sessionهای فایل‌محور، cache خرد یا اسکن مسیرها را بررسی کنید. این یک سرنخ است، نه حکم قطعی. access log، زمان cron، File Manager و گزارش افزونه بکاپ باید فرضیه را تأیید کنند.

inode چیست و چرا با فضای خالی هم پر می‌شود؟

inode ساختار اطلاعاتی فایل‌سیستم برای نگهداری فراداده هر فایل یا پوشه است. از دید عملی، تعداد بسیار زیاد فایل‌ها می‌تواند سهم inode را مصرف کند، حتی اگر مجموع حجم آن‌ها کم باشد. cacheهای ریز، session، ایمیل، thumbnail، log چرخش‌نیافته، نسخه‌های staging و بکاپ‌های استخراج‌شده از عوامل رایج افزایش تعداد فایل هستند. بنابراین پیام «فضای کافی دارید» پرشدن inode را رد نمی‌کند.

وقتی ظرفیت inode تمام شود، ایجاد فایل یا پوشه جدید ممکن است شکست بخورد. نتیجه می‌تواند ناتوانی در آپلود، دریافت ایمیل، ساخت cache، به‌روزرسانی افزونه یا نوشتن session باشد. حذف کورکورانه فایل‌ها خطرناک است؛ ابتدا مسیرهای پرشمار را پیدا کنید، نوع فایل و مالک آن را بشناسید و سیاست نگهداری تعریف نمایید. cache قابل‌بازسازی با فایل اصلی کاربر یا نسخه پشتیبان یکسان نیست.

CloudLinux Manager فقط زمانی مصرف inode را نمایش می‌دهد که این قابلیت فعال و محدودیت برای کاربر تنظیم شده باشد. اگر پنل عدد inode ندارد، از نبود محدودیت نتیجه نگیرید؛ از پشتیبانی بپرسید یا ابزار File Usage موجود در پنل را بررسی کنید. مقدار و سیاست هر پلن را باید از اطلاعات فعلی همان سرویس دریافت کرد.

نشانهمنبع محتملبررسی ایمناقدام اولیه
فضای خالی است اما فایل جدید ساخته نمی‌شودinode یا مجوز فایلFile Usage، Error Log و مسیرهای پرشمارشناسایی cache، session، log یا بکاپ استخراج‌شده
بکاپ بسیار کند شدهI/O یا IOPSزمان Fault و گزارش افزونه بکاپزمان‌بندی مجدد، کاهش هم‌زمانی و بکاپ افزایشی
نصب افزونه روی Extract می‌ماندI/O، inode یا timeoutفضا، inode، Fault و لاگ PHPپاک‌سازی ایمن و اجرای مرحله‌ای
پوشه cache میلیون‌ها فایل داردسیاست cache نامناسبتعداد فایل و TTLاصلاح نگهداری و پاک‌سازی کنترل‌شده
ایمیل یا session نوشته نمی‌شودinode، quota یا permissionلاگ سرویس و مصرف فایلرفع عامل و بازیابی ظرفیت

Entry Processes و NPROC چه فرقی دارند؟

Entry Processes یا EP تعداد ورودهای هم‌زمان به محیط LVE را کنترل می‌کند. در بسیاری از پیکربندی‌ها، درخواست‌های پویا به وب‌سرور، بعضی نشست‌های SSH و cronهای هم‌زمان می‌توانند در این شمارش نقش داشته باشند. NPROC سقف تعداد کل پردازه‌ها یا threadهای داخل LVE است. پس EP با «تعداد بازدیدکننده آنلاین» برابر نیست و NPROC نیز صرفاً تعداد تب‌های مرورگر کاربر نیست.

یک درخواست می‌تواند سریع وارد و خارج شود، بنابراین تعداد زیاد درخواست لزوماً EP را پر نمی‌کند. مشکل زمانی تشدید می‌شود که درخواست‌های پویا دیر تمام شوند و هم‌زمان درخواست‌های جدید برسند. کوئری کند، API خارجی دیرپاسخ، قفل session، PHP کند، حمله ربات و cache miss گسترده می‌توانند زمان ماندگاری را افزایش دهند. در این حالت حتی ترافیک نه‌چندان بزرگ نیز concurrency بالایی می‌سازد.

CloudLinux خطای 508 Resource Limit Reached را به رسیدن Entry Processes یا محدودیت منابع مرتبط می‌داند. cPanel نیز توضیح می‌دهد که 508 در CloudLinux زمانی رخ می‌دهد که حساب از LVE تعیین‌شده عبور کند؛ ترافیک زیاد، سایت بهینه‌نشده، عملیات سنگین backend و crawler پرتقاضا از علت‌های ممکن‌اند. با این حال، برای انتخاب راه‌حل باید Fault مربوط و زمان رخداد را ببینید، نه اینکه فقط از روی شماره خطا پلن را ارتقا دهید.

ورود هم‌زمان درخواست‌های وب به دروازه پردازشی سرور هاست
Entry Processes به ورودی‌های هم‌زمان محیط میزبانی مربوط است و با تعداد کل پردازه‌ها یکسان نیست.

مثال ساده برای درک EP

فرض کنید ده درخواست پویا هرکدام در صد میلی‌ثانیه تمام می‌شوند؛ ورودی‌ها سریع آزاد می‌شوند. حال اگر همان درخواست‌ها به‌دلیل API خارجی یا کوئری کند چند ثانیه باز بمانند، درخواست‌های بعدی روی آن‌ها انباشته می‌شوند. تعداد بازدید ممکن است مشابه باشد، اما EP بسیار بالاتر می‌رود. بهینه‌سازی زمان پاسخ، cache و timeout می‌تواند قبل از افزایش سقف، مشکل را حل کند.

NPROC چه زمانی بالا می‌رود؟

cronهای متعدد، workerهای پس‌زمینه، shell، پردازه‌های PHP و برنامه‌هایی که child process می‌سازند می‌توانند NPROC را افزایش دهند. اگر اسکریپتی پردازه تولید کند اما آن‌ها را جمع نکند، مصرف به‌صورت غیرطبیعی رشد می‌کند. فهرست پردازه و زمان‌بندی cron را بررسی کنید. در هاست اشتراکی دسترسی ابزارهای سیستمی ممکن است محدود باشد؛ در این حالت اطلاعات زمان و Fault را برای پشتیبانی ارسال کنید.

خطاهای 508، 503، 504 و 500 را چگونه تفسیر کنیم؟

شماره خطا به‌تنهایی تشخیص قطعی نیست. 508 در محیط CloudLinux سرنخ قوی برای محدودیت LVE و به‌ویژه Entry Processes است. 503 به معنی موقتاً در دسترس نبودن سرویس است و می‌تواند از کمبود حافظه، توقف پردازه، maintenance یا مشکل سرویس ایجاد شود. 504 معمولاً timeout بین gateway و backend است و می‌تواند با پردازش کند، API خارجی یا دیتابیس مرتبط باشد. 500 یک خطای عمومی داخلی است و از PHP fatal تا permission یا توقف پردازه بر اثر حافظه علت‌های زیادی دارد.

قاعده عملی این است: کد HTTP را با timestamp، URL، شناسه درخواست و Resource Usage تطبیق دهید. اگر 508 و EP Fault دقیقاً هم‌زمان‌اند، بررسی concurrency و درخواست‌های کند اولویت دارد. اگر 500 با PMEM Fault و پیام killed process دیده می‌شود، حافظه را بررسی کنید. اگر 504 بدون Fault منابع است، upstream، timeout و سرویس خارجی را دنبال نمایید. مقاله راهنمای خطای HTTP 500 برای شاخه عمومی خطای 500 مکمل این بخش است.

خطا یا نشانهارتباط محتمل با منابعمدرک لازماز چه نتیجه‌گیری پرهیز کنیم؟
508 Resource Limit ReachedLVE و معمولاً EPEP Fault، زمان و access logهر 508 یعنی فقط بازدید زیاد است
503 Service Unavailableحافظه، worker یا سرویس موقتPMEM Fault، PHP و webserver logحتماً باید پلن را ارتقا داد
504 Gateway Timeoutbackend یا upstream کندزمان پاسخ، endpoint و Faultهاشبکه کاربر تنها علت است
500 Internal Server ErrorPHP، permission، memory یا تنظیماتerror_log و PMEMهمه خطاهای 500 از کمبود RAM است
کندی بدون خطاCPU یا I/O throttle، دیتابیس یا frontendنمودار زمان‌بندی‌شده و تست لایه‌هاچون خطا نیست منابع کافی‌اند

روال عیب‌یابی محدودیت منابع هاست لینوکس

عیب‌یابی را از زمان و شواهد شروع کنید، نه از حدس درباره افزونه مقصر. یک نمونه خطا را با ساعت دقیق، صفحه، عملیات کاربر و کد HTTP ثبت کنید. سپس در Resource Usage همان بازه را باز کنید و ببینید کدام Fault افزایش یافته است. بعد لاگ خطا، access log، cron و فعالیت مدیریتی را بررسی کنید. هدف این است که زنجیره «رخداد → منبع محدودشده → درخواست یا پردازه → علت نرم‌افزاری یا رشد واقعی» ساخته شود.

مرحله اول: بازتولید کنترل‌شده

اگر مشکل با یک عملیات مشخص مانند ذخیره محصول، import یا تهیه گزارش تکرار می‌شود، آن را در زمان کم‌ریسک و ترجیحاً محیط staging بازتولید کنید. قبل و بعد از عملیات، نمودار و لاگ را مقایسه نمایید. روی سایت فروشگاهی زنده، بازتولید سنگین بدون هماهنگی می‌تواند کاربران را تحت‌تأثیر قرار دهد. برای خطای تصادفی، به جای تکرار کور، داده موجود را جمع‌آوری کنید.

مرحله دوم: نوع Fault را جدا کنید

CPUf، PMemF، IOf، IOPSf، EPf و NprocF علت‌های متفاوت دارند. چند Fault ممکن است زنجیره‌ای باشند؛ مثلاً کوئری کند CPU را بالا می‌برد، درخواست‌ها دیر تمام می‌شوند و EP نیز پر می‌شود. تعیین کنید کدام شاخص زودتر بالا رفته و کدام پیامد بعدی است. نمودار با بازه ریز و log زمان‌دار برای این ترتیب لازم است.

مرحله سوم: عامل را به URL، job یا پردازه نسبت دهید

access log مسیر پرتکرار یا کند را نشان می‌دهد؛ cron زمان job را مشخص می‌کند؛ لاگ افزونه بکاپ نتیجه هر اجرا را ثبت می‌کند؛ PHP error log خطای حافظه یا اجرای طولانی را آشکار می‌سازد. اگر دسترسی پردازه ندارید، زمان، دامنه، URL و تصویر Fault را برای پشتیبانی ارسال کنید. درخواست دقیق معمولاً پاسخ دقیق‌تری از جمله کلی «هاست کند است» می‌گیرد.

مرحله چهارم: تغییر کم‌ریسک و اندازه‌گیری مجدد

یک متغیر را در هر نوبت تغییر دهید

کش را فعال کنید، cron را جابه‌جا نمایید یا یک افزونه مشکوک را در staging غیرفعال کنید؛ اما همه تغییرها را هم‌زمان انجام ندهید. در غیر این صورت معلوم نمی‌شود کدام اقدام مؤثر بوده است. معیار قبل و بعد را یکسان نگه دارید: زمان پاسخ، تعداد Fault، نرخ خطا و مصرف در بار مشابه.

مدرک موفقیت تغییر چیست؟

موفقیت فقط سریع‌ترشدن یک بار صفحه نیست. باید در چند بازه مشابه، Fault کمتر شود، زمان پاسخ بهبود یابد و عملیات اصلی بدون خطا تکمیل گردد. اگر کش نتیجه را بهتر کرده اما کاربران واردشده هنوز خطا دارند، endpoint پویا جداگانه بهینه‌سازی می‌خواهد.

چه زمانی تغییر را بازگردانیم؟

اگر نرخ خطا، رفتار سبد خرید، ورود کاربران، cron یا سازگاری افزونه بدتر شد، تغییر را به نسخه ثبت‌شده قبلی برگردانید. قبل از هر اقدام نسخه پشتیبان و روش rollback داشته باشید. بهینه‌سازی بدون قابلیت بازگشت می‌تواند از خود محدودیت پرریسک‌تر باشد.

سناریوهای واقعی و مسیر تشخیص

وردپرس پس از نصب افزونه سنگین کند شده است

زمان نصب یا فعال‌سازی را با آغاز CPUf و PMemF مقایسه کنید. صفحات عمومی، wp-admin، cron و AJAX را جدا تست نمایید. افزونه ممکن است در هر درخواست query اضافی اجرا کند یا job پس‌زمینه بسازد. روی staging و با داده مشابه، افزونه را موقتاً غیرفعال و شاخص‌ها را مقایسه کنید. اگر نیاز تجاری به افزونه قطعی است، تنظیمات، جایگزین سبک‌تر یا ظرفیت بالاتر بررسی شود.

ووکامرس در کمپین خطای 508 می‌دهد

ابتدا EPf و زمان پاسخ endpointهای پویا مانند سبد، checkout و AJAX را ببینید. cache صفحه برای محتوای شخصی کافی نیست؛ Object Cache، کوئری دیتابیس، صف Action Scheduler و درخواست ربات‌ها نیز بررسی شوند. اگر تعداد سفارش واقعی رشد کرده و پس از بهینه‌سازی هنوز ظرفیت پر می‌شود، پلن تخصصی‌تر مانند هاست ووکامرس یا معماری قابل‌گسترش‌تر ارزش بررسی دارد.

بکاپ شبانه سایت را کند می‌کند

قله I/O و CPU را با ساعت بکاپ تطبیق دهید. بکاپ کامل محلی، فشرده‌سازی و انتقال می‌تواند چند مرحله مصرف بسازد. تعداد نسخه، فایل‌های داخل archive، تکرار job ناموفق و هم‌زمانی با اسکن امنیتی را بررسی کنید. بکاپ را حذف نکنید؛ آن را به ساعت مناسب منتقل، incremental و مقصد را اصولی انتخاب کنید. راهنمای بکاپ در cPanel برای اجرای صحیح نسخه پشتیبان مفید است.

ایمپورت محصول یا دیتابیس نیمه‌کاره می‌ماند

ایمپورت می‌تواند هم‌زمان CPU، PMEM، I/O و timeout را درگیر کند. فایل را به batchهای کوچک تقسیم کنید، حجم هر دسته و زمان پردازش را ثبت نمایید و از تکرار کل عملیات پس از خطا جلوگیری کنید. لاگ مشخص می‌کند مشکل memory_limit، PMEM، زمان اجرا یا ورودی ناسالم است. افزایش یک سقف بدون شناخت عامل ممکن است گلوگاه را به منبع بعدی منتقل کند.

ربات یا crawler درخواست زیادی می‌فرستد

access log را براساس URL، user-agent، IP و نرخ درخواست جمع‌بندی کنید. همه ربات‌ها مخرب نیستند و مسدودسازی گسترده می‌تواند موتور جست‌وجو یا سرویس قانونی را مختل کند. rate limit هدفمند، cache پاسخ عمومی و اصلاح endpoint پرهزینه را بررسی کنید. اگر حمله یا سوءاستفاده محتمل است، شواهد را نگه دارید و از پشتیبانی بخواهید لایه شبکه و WAF را نیز بررسی کند.

بهینه‌سازی یا ارتقا؛ چگونه تصمیم بگیریم؟

بهینه‌سازی زمانی اولویت دارد که مصرف از خطای نرم‌افزاری، افزونه غیرضروری، cron تکراری، cache نامناسب، crawler یا کوئری ناکارآمد ناشی می‌شود. ارتقا زمانی منطقی‌تر است که بار سالم و درآمدزا پس از بهینه‌سازی همچنان سقف را به‌طور منظم پر می‌کند. هیچ‌کدام مطلق نیست: گاهی برای عبور از کمپین یک ارتقای کوتاه‌مدت لازم است و اصلاح معماری بعداً انجام می‌شود؛ گاهی افزایش منابع فقط هزینه نشت را بیشتر می‌کند.

برای تصمیم، یک دوره نماینده را بررسی کنید: چند روز عادی، یک روز پرترافیک و فعالیت‌های برنامه‌ریزی‌شده. تعداد Fault، مدت نزدیک‌بودن به Limit، نرخ خطا و نوع عملیات را بنویسید. اگر Fault فقط در job قابل‌انتقال است، زمان‌بندی را اصلاح کنید. اگر چند منبع در بار معمول پر می‌شوند و رشد پایدار است، ارتقا یا مهاجرت مطرح می‌شود. اگر کنترل سیستم‌عامل، worker دائمی یا نرم‌افزار خاص لازم دارید، سرور مجازی ممکن است مناسب‌تر باشد، اما مسئولیت مدیریت آن بیشتر است.

دو مسیر بهینه‌سازی نرم‌افزار و افزایش ظرفیت سخت‌افزاری برای یک سرور
داده‌های مصرف مشخص می‌کنند مشکل با بهینه‌سازی حل می‌شود یا ارتقای پلن منطقی‌تر است.
الگوتصمیم اولیهدلیلگام بعدی
Fault فقط هنگام بکاپ کاملبهینه‌سازی زمان و روشبار برنامه‌ریزی‌شده استتغییر ساعت، incremental و آزمون بازیابی
EPf با endpoint کندبهینه‌سازی برنامه و دیتابیسدرخواست‌ها دیر آزاد می‌شوندپروفایل endpoint، cache و timeout
رشد واقعی و Fault منظم پس از بهینه‌سازیبررسی ارتقای پلنظرفیت با بار سالم هم‌خوان نیستمقایسه پلن با داده دوره نماینده
نیاز به daemon یا تنظیم سیستم‌عاملبررسی سرور مجازیمحدودیت مدل اشتراکی استبرآورد مدیریت، امنیت و بکاپ
inode ناشی از cache و log رهاشدهپاک‌سازی و سیاست نگهداریمصرف مفید نیستTTL، rotation و هشدار
خطا بدون Fault منابعادامه عیب‌یابی نرم‌افزارشاهد محدودیت وجود نداردPHP، دیتابیس، DNS و سرویس خارجی

هاست لینوکس یا هاست وردپرس؟

هاست لینوکس برای سایت‌ها و برنامه‌های سازگار با پشته ارائه‌شده انعطاف عمومی دارد. هاست وردپرس معمولاً برای الگوهای رایج وردپرس و ابزارهای مرتبط سازمان‌دهی می‌شود. نام محصول به‌تنهایی ظرفیت را تضمین نمی‌کند؛ محدودیت‌ها، نسخه PHP، کش، بکاپ، پشتیبانی و نیاز برنامه باید بررسی شود. اگر پروژه شما وردپرسی است، صفحه هاست وردپرس را نیز با نیاز واقعی مقایسه کنید.

برای کاربران داخل کشور که محل میزبانی برایشان مهم است، صفحه هاست لینوکس ایران یک گزینه مرتبط برای بررسی است. از عنوان محصول درباره مقدار CPU، RAM، I/O یا inode نتیجه‌گیری نکنید. مشخصات فعلی هر پلن و سیاست ارتقا را در زمان سفارش بخوانید و اگر شاخصی درج نشده، پیش از خرید از پشتیبانی سؤال کنید.

چک‌لیست خرید هاست لینوکس از نظر منابع

  1. نوع بار را مشخص کنید: سایت شرکتی، فروشگاه، API، دانلود، ایمیل یا پردازش زمان‌بندی‌شده.
  2. آمار فعلی CPU، حافظه، I/O، IOPS، EP، NPROC، inode و خطاها را از یک بازه نماینده جمع کنید.
  3. بپرسید Resource Usage و تاریخچه Fault در پنل حساب در دسترس است یا خیر.
  4. مقدار و روش نمایش محدودیت‌های همان پلن را از مشخصات جاری یا پشتیبانی تأیید کنید.
  5. سیاست ارتقا، زمان اعمال تغییر و امکان جابه‌جایی بدون قطعی را بررسی نمایید.
  6. بکاپ، محل نگهداری، دوره نگهداری و امکان restore آزمایشی را روشن کنید.
  7. نسخه‌های PHP، دیتابیس، SSL، cron و ابزارهای موردنیاز برنامه را کنترل نمایید.
  8. برای وردپرس و فروشگاه، سازگاری cache، staging و پردازش‌های پس‌زمینه را بسنجید.
  9. در مورد محدودیت inode، ایمیل، دیتابیس، تعداد فایل و cron سؤال دقیق بپرسید.
  10. اگر نیاز به دسترسی روت یا daemon دارید، از ابتدا مدل سرور مجازی را نیز ارزیابی کنید.
  11. قیمت را کنار پشتیبانی، شفافیت نمودار و قابلیت ارتقا ببینید؛ فقط عدد فضای دیسک را مقایسه نکنید.
  12. پس از خرید، baseline مصرف را ثبت و هشدار داخلی برای رشد فایل، خطا و زمان پاسخ تعریف کنید.

اشتباهات رایج در تحلیل Resource Usage

  • یکی دانستن Average با Max و نادیده‌گرفتن جهش کوتاه.
  • فرض اینکه هر Fault حتماً نیاز به ارتقای فوری دارد.
  • افزایش memory_limit بدون بررسی PMEM و concurrency.
  • یکی دانستن I/O دیسک با ترافیک شبکه.
  • یکی دانستن EP با تعداد بازدیدکننده یا NPROC با EP.
  • پاک‌کردن فایل‌های ناشناس فقط برای آزادکردن inode.
  • غیرفعال‌کردن چند افزونه هم‌زمان و از دست‌دادن امکان تشخیص عامل.
  • مقایسه اعداد پلن‌های مختلف بدون توجه به روش اندازه‌گیری و سیاست سرویس.
  • بررسی نمودار روزانه برای خطایی که چند ثانیه طول کشیده است.
  • تکیه بر کد HTTP بدون خواندن Error Log و timestamp.
  • اجرای تست سنگین روی سایت زنده بدون نسخه پشتیبان و rollback.
  • مهاجرت به سرور مجازی بدون برآورد مسئولیت امنیت، مانیتورینگ و نگهداری.

برنامه هفت‌روزه برای پایدارکردن سایت

روز اول، سه نمونه خطا یا کندی را با زمان دقیق ثبت کنید. روز دوم، Resource Usage و Error Log را با آن زمان‌ها تطبیق دهید. روز سوم، مسیرها، cron و عملیات سنگین را دسته‌بندی کنید. روز چهارم، یک تغییر کم‌ریسک مانند جابه‌جایی بکاپ یا اصلاح cache را در staging آزمایش نمایید. روز پنجم، معیار قبل و بعد را مقایسه کنید. روز ششم، بار عادی و پرترافیک را جدا بررسی و روز هفتم تصمیم به حفظ، اصلاح بیشتر یا ارتقا بگیرید.

خروجی این هفته باید یک گزارش کوتاه باشد: کدام منبع Fault داشت، عامل محتمل چه بود، چه تغییری انجام شد، نتیجه عددی چه بود و ریسک بعدی چیست. این گزارش برای گفت‌وگو با پشتیبانی و انتخاب پلن بسیار ارزشمندتر از یک اسکرین‌شات بدون زمان و توضیح است. گزارش را پس از هر کمپین، مهاجرت یا نصب افزونه مهم به‌روزرسانی کنید.

چگونه یک درخواست پشتیبانی قابل‌بررسی بنویسیم؟

اگر دسترسی شما به پردازه‌ها و لاگ‌های سرور محدود است، کیفیت اطلاعاتی که برای پشتیبانی می‌فرستید اهمیت زیادی دارد. عنوانی مانند «هاست ضعیف است» نقطه شروع دقیقی نمی‌سازد. دامنه، زمان دقیق با منطقه زمانی، URL یا عملیات، کد خطا، مرورگر یا منبع درخواست و تعداد دفعات تکرار را بنویسید. اگر Resource Usage در همان دقیقه Fault نشان می‌دهد، نام منبع و تصویر بازه را اضافه کنید. رمز عبور، توکن، اطلاعات پرداخت و داده شخصی کاربران را در تصویر یا متن تیکت قرار ندهید.

توضیح دهید پیش از خطا چه تغییری انجام شده است: نصب افزونه، اجرای import، کمپین، تغییر PHP، فعال‌سازی cache یا اجرای بکاپ. اگر تغییر قابل‌بازگشت بوده و با بازگرداندن آن مشکل رفع شده، نتیجه را ثبت کنید. از پشتیبانی بخواهید زمان رخداد را با LVE، webserver و PHP log تطبیق دهد و مشخص کند کدام Fault یا پردازه عامل بوده است. این درخواست از سؤال کلی «منابع را زیاد کنید» دقیق‌تر است و احتمال تجویز ارتقای غیرضروری را کم می‌کند.

پاسخ پشتیبانی را نیز به داده قابل‌آزمایش تبدیل کنید. اگر گفته می‌شود افزونه خاصی CPU مصرف کرده، نام پردازه، مسیر یا زمان آن را بپرسید و در staging بررسی نمایید. اگر پیشنهاد ارتقا داده می‌شود، روشن کنید کدام منبع محدود است و چه الگوی مصرفی پس از ارتقا پوشش داده خواهد شد. هیچ ارائه‌دهنده‌ای نمی‌تواند فقط از یک لحظه مصرف، رشد آینده را دقیق تضمین کند؛ تصمیم باید ترکیبی از تاریخچه، بار تجاری و امکان بهینه‌سازی باشد.

الگوی کوتاه گزارش رخداد

دامنه و URL درگیر:
تاریخ و ساعت دقیق با منطقه زمانی:
عملیات کاربر یا job فعال:
کد خطا و متن پیام:
Fault مشاهده‌شده و بازه نمودار:
آخرین تغییر نرم‌افزاری یا محتوایی:
تعداد دفعات تکرار و اثر روی کاربران:
اقدام آزمایشی انجام‌شده و نتیجه:

این الگو برای هر رخداد یک شناسه و خط زمانی می‌سازد. اگر چند دامنه روی یک حساب هستند، دامنه درگیر را جدا بنویسید. اگر مشکل فقط برای کاربران واردشده، یک کشور، یک درگاه یا یک API رخ می‌دهد، آن شرط را ذکر کنید. هرچه محدوده مسئله دقیق‌تر باشد، جداکردن محدودیت منابع از DNS، شبکه، سرویس خارجی یا خطای برنامه سریع‌تر انجام می‌شود.

پایش پس از ارتقا یا بهینه‌سازی

پس از ارتقا تصور نکنید مسئله برای همیشه حل شده است. baseline جدید را در روزهای عادی ثبت کنید و همان عملیات قبلی را با معیار یکسان بسنجید. اگر Fault حذف شده اما زمان پاسخ تغییر نکرده، احتمال دارد گلوگاه در دیتابیس، API خارجی یا frontend باشد. اگر منابع جدید بلافاصله به همان نسبت مصرف می‌شوند، نشت نرم‌افزاری، صف بی‌انتها یا کار پس‌زمینه باید دوباره بررسی شود.

پس از بهینه‌سازی نیز فقط یک تست موفق کافی نیست. حداقل یک چرخه واقعی شامل ساعات اوج، cronهای شبانه، بکاپ و فعالیت مدیر را مشاهده کنید. تغییر کش می‌تواند صفحات عمومی را سریع کند ولی checkout، جست‌وجو یا پنل مدیریت همچنان پویا بماند. داشبورد را به تفکیک مسیرهای عمومی و خصوصی تفسیر کنید و برای هرکدام معیار موفقیت مستقل داشته باشید.

در نهایت، ظرفیت آزاد باید هدفمند باشد. داشتن حاشیه برای رشد و جهش منطقی است، اما عدد ثابت و جهانی برای همه سایت‌ها وجود ندارد. فروشگاه، سایت شرکتی، وبلاگ و API الگوهای متفاوتی دارند. روند چند هفته‌ای، هزینه خطا و سرعت ارتقای سرویس را کنار هم بگذارید تا میزان حاشیه مناسب برای کسب‌وکار خود را تعیین کنید.

جمع‌بندی و انتخاب آگاهانه

محدودیت منابع هاست لینوکس ابزار حفاظت و تقسیم ظرفیت است، نه حکم قطعی درباره کیفیت سایت یا سرور. CPU، PMEM، I/O، IOPS، Entry Processes، NPROC و inode هرکدام رفتار متفاوتی دارند و باید با Fault، زمان رخداد و لاگ مناسب تحلیل شوند. 508 سرنخ مهمی برای محدودیت LVE است، اما خطاهای 500، 503 و 504 بدون شواهد تکمیلی علت واحدی ندارند. راه درست، ساخت زنجیره شواهد و اجرای تغییر قابل‌اندازه‌گیری است.

اگر مصرف ناشی از اتلاف نرم‌افزاری است، بهینه‌سازی معمولاً نتیجه پایدارتر و کم‌هزینه‌تری دارد. اگر بار واقعی و سالم پس از اصلاحات ظرفیت را منظم پر می‌کند، ارتقای پلن یا تغییر مدل میزبانی منطقی است. برای بررسی گزینه‌های موجود، مشخصات به‌روز خرید هاست لینوکس وطن هاست را ببینید و نمودار یا گزارش مصرف فعلی خود را در اختیار پشتیبانی بگذارید تا پیشنهاد براساس داده باشد، نه حدس.

پرسش‌های متداول محدودیت منابع هاست لینوکس

Fault در Resource Usage دقیقاً چیست؟

Fault نشان می‌دهد حساب در یک بازه به سقف منبع مشخصی رسیده یا آن را نقض کرده است. Fault علت نرم‌افزاری را مشخص نمی‌کند؛ باید زمان آن با URL، لاگ خطا، cron و عملیات سایت تطبیق داده شود.

آیا خطای 508 همیشه به معنی کمبود CPU است؟

خیر. در CloudLinux خطای 508 با عبور حساب از محدودیت LVE و به‌ویژه Entry Processes ارتباط دارد. نمودار EP Fault و سایر Faultها را در همان زمان بررسی کنید و درخواست‌های کند یا هم‌زمان را بیابید.

تفاوت Entry Processes با NPROC چیست؟

EP تعداد ورودهای هم‌زمان به محیط LVE را کنترل می‌کند، اما NPROC تعداد کل پردازه‌ها یا threadهای حساب را محدود می‌سازد. یک درخواست کند می‌تواند EP را مدت بیشتری اشغال کند، در حالی که cron و workerها ممکن است NPROC را بالا ببرند.

آیا افزایش PHP memory_limit مشکل RAM را حل می‌کند؟

همیشه خیر. memory_limit به یک اجرای PHP مربوط است، ولی PMEM مصرف تجمعی پردازه‌های حساب را کنترل می‌کند. افزایش memory_limit بدون تحلیل ممکن است اجازه دهد هر پردازه حافظه بیشتری مصرف کند و PMEM زودتر پر شود.

I/O با IOPS چه تفاوتی دارد؟

I/O نرخ انتقال داده دیسک است و IOPS تعداد عملیات خواندن و نوشتن در ثانیه را نشان می‌دهد. فایل بزرگ می‌تواند I/O بالایی بسازد، در حالی که تعداد فراوان فایل کوچک بیشتر روی IOPS اثر می‌گذارد.

چرا با وجود فضای خالی نمی‌توانم فایل ایجاد کنم؟

یکی از احتمال‌ها پرشدن inode است؛ هر فایل و پوشه یک ساختار inode نیاز دارد. quota، permission و خطای فایل‌سیستم نیز ممکن‌اند. File Usage، inode، Error Log و مجوز مسیر را بررسی کنید.

چه زمانی باید هاست را ارتقا بدهم؟

وقتی پس از رفع افزونه یا cron معیوب، بهینه‌سازی cache و دیتابیس و کنترل ربات‌ها، بار واقعی سایت در چند بازه نماینده همچنان به‌طور منظم Fault ایجاد می‌کند، ارتقا ارزش بررسی دارد.

آیا مهاجرت به سرور مجازی همه محدودیت‌ها را حذف می‌کند؟

سرور مجازی کنترل و انعطاف بیشتری می‌دهد، اما منابع آن نیز محدود است و مدیریت سیستم‌عامل، امنیت، بکاپ و مانیتورینگ بر عهده شما یا سرویس مدیریت‌شده خواهد بود. تصمیم باید براساس نیاز فنی و توان مدیریت گرفته شود.

منابع فنی مقاله

تعریف محدودیت‌ها، رفتار PMEM، I/O، IOPS، EP و NPROC و مفهوم Fault براساس مستندات رسمی محدودیت‌های CloudLinux و راهنمای CloudLinux Manager نوشته شده است. محل و ماهیت Resource Usage نیز با مستندات رسمی cPanel تطبیق داده شد. راهنمای 508 از منابع رسمی CloudLinux و cPanel بررسی شده است. امکانات و مقادیر واقعی هر پلن فقط از مشخصات جاری همان سرویس قابل نتیجه‌گیری است.

دیدگاه‌ها

در حال دریافت دیدگاه‌ها…

از ثبت دیدگاهت ممنونیم

دیدگاه شما پس از تأیید منتشر می‌شود.