آموزشی لینوکس

چرا VPS کند شده است؟ آموزش پیدا کردن عامل کندی CPU، RAM، Disk و Network

اگر VPS شما به‌تازگی کند شده، سایت‌ها با تأخیر باز می‌شوند، اتصال SSH قطع و وصل می‌شود یا اجرای دستورات زمان زیادی می‌برد، احتمالاً یکی از منابع اصلی سرور با مشکل مواجه شده است.

کندی VPS همیشه به معنی ضعیف بودن سرور نیست. گاهی یک پردازش، مصرف بیش از حد RAM، پر شدن فضای دیسک، عملیات سنگین روی هارد یا حتی مشکلات شبکه باعث می‌شود عملکرد سرور به‌شدت کاهش پیدا کند.

در این آموزش یاد می‌گیریم چگونه مرحله‌به‌مرحله مشخص کنیم مشکل از CPU، RAM، Disk یا Network است و بعد چه کاری برای رفع آن انجام دهیم.


1. ابتدا مشخص کنید مشکل واقعاً از VPS است

قبل از تغییر تنظیمات یا ارتقای سرور، بهتر است وضعیت منابع را بررسی کنیم.

اگر از Linux مانند Ubuntu یا Debian استفاده می‌کنید، ابتدا با SSH وارد VPS شوید و دستور زیر را اجرا کنید:

uptime

خروجی ممکن است چیزی شبیه این باشد:

09:30:12 up 15 days, 4:21, 2 users, load average: 5.20, 4.80, 4.30

مهم‌ترین قسمت، عبارت:

load average

است.

این مقدار نشان می‌دهد چه میزان کار در صف پردازنده قرار گرفته است.

اگر VPS شما یک هسته CPU داشته باشد و Load به شکل مداوم بالاتر از 1 باشد، احتمال وجود فشار روی CPU یا I/O وجود دارد.

در سرورهای چند هسته‌ای باید Load را با تعداد هسته‌ها مقایسه کنید.

برای مشاهده تعداد هسته‌های CPU:

nproc

مثلاً اگر خروجی:

4

باشد، VPS شما چهار هسته دارد.


2. بررسی مصرف CPU

یکی از رایج‌ترین دلایل کند شدن VPS، مصرف بالای CPU است.

برای مشاهده پردازش‌های فعال، دستور زیر را اجرا کنید:

top

یا اگر روی سرور نصب باشد:

htop

در htop می‌توانید پردازش‌هایی که بیشترین CPU را مصرف می‌کنند مشاهده کنید.

برای مثال:

PID    USER     CPU%    MEM%
2451   mysql    85.2    12.4
3122   www-data 35.1     8.2

در این مثال MySQL بیشترین CPU را مصرف می‌کند.

پیدا کردن پردازش‌های پرمصرف

برای نمایش پردازش‌هایی که بیشترین CPU را مصرف می‌کنند:

ps aux --sort=-%cpu | head

این دستور معمولاً سریع‌ترین راه برای پیدا کردن عامل مصرف بالای CPU است.

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


3. اگر CPU روی 100 درصد است چه کنیم؟

اول نباید بلافاصله پردازش را Kill کنید.

ابتدا نام برنامه و PID آن را پیدا کنید.

مثلاً:

ps aux --sort=-%cpu | head -10

سپس بررسی کنید پردازش مربوط به چه برنامه‌ای است.

اگر یک برنامه مشخص باعث مصرف بالا شده باشد، می‌توانید لاگ آن سرویس را بررسی کنید.

برای سرویس‌های systemd:

journalctl -u نام-سرویس

مثلاً:

journalctl -u nginx

یا:

journalctl -u mysql

همچنین بهتر است بررسی کنید آیا افزایش مصرف CPU دائمی است یا فقط در یک بازه زمانی اتفاق می‌افتد.


4. بررسی RAM

گاهی CPU وضعیت مناسبی دارد اما VPS به دلیل کمبود RAM بسیار کند می‌شود.

برای بررسی RAM:

free -h

مثلاً:

              total   used   free   shared   buff/cache   available
Mem:           4Gi    3.7Gi  120Mi   100Mi      200Mi       250Mi
Swap:          1Gi    900Mi  124Mi

مهم‌ترین مقدار:

available

است.

اگر مقدار Available بسیار کم باشد، سرور ممکن است تحت فشار حافظه قرار گرفته باشد.


5. Swap چیست و چرا مهم است؟

Linux در صورت کمبود RAM می‌تواند بخشی از اطلاعات را روی Disk منتقل کند.

این فضا معمولاً با نام:

Swap

شناخته می‌شود.

برای بررسی Swap:

swapon --show

اگر هیچ خروجی مشاهده نکردید، ممکن است Swap روی VPS فعال نباشد.

همچنین می‌توانید با دستور زیر وضعیت RAM و Swap را ببینید:

free -h

فعال شدن Swap می‌تواند در بعضی شرایط از Crash کردن برنامه‌ها به دلیل کمبود RAM جلوگیری کند، اما نباید آن را جایگزین RAM واقعی در نظر گرفت.

اگر سرور دائماً در حال استفاده شدید از Swap باشد، ممکن است عملکرد آن به‌شدت کاهش پیدا کند؛ چون Disk معمولاً بسیار کندتر از RAM است.


6. پیدا کردن برنامه‌ای که RAM زیادی مصرف می‌کند

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

ps aux --sort=-%mem | head -10

مثلاً ممکن است مشاهده کنید:

mysql       25%
php-fpm     18%
node        15%

در این شرایط باید بررسی کنید آیا مصرف حافظه طبیعی است یا یک سرویس دچار Memory Leak شده است.


7. بررسی Disk

گاهی مشکل اصلی نه CPU است و نه RAM؛ بلکه Disk باعث کند شدن VPS شده است.

اول فضای ذخیره‌سازی را بررسی کنید:

df -h

مثلاً:

Filesystem      Size  Used Avail Use%
/dev/vda1        50G   48G  2G   96%

اگر فضای Disk تقریباً پر شده باشد، بسیاری از سرویس‌ها ممکن است با مشکل مواجه شوند.

برای مثال:

  • MySQL ممکن است نتواند داده جدید بنویسد.
  • Logها ممکن است با خطا مواجه شوند.
  • برنامه‌ها نتوانند فایل موقت ایجاد کنند.
  • سیستم‌عامل عملکرد مناسبی نداشته باشد.

8. پیدا کردن فایل‌های بزرگ

اگر فضای Disk کم است، ابتدا مشخص کنید چه چیزی فضای زیادی اشغال کرده است.

برای بررسی پوشه‌های اصلی:

du -h --max-depth=1 / | sort -h

برای بررسی /var:

du -h --max-depth=1 /var | sort -h

یکی از موارد رایج، Logهای بسیار بزرگ است.

مثلاً:

/var/log

را بررسی کنید.

du -sh /var/log/*

اگر یک Log حجم بسیار زیادی دارد، باید علت ایجاد مداوم آن را پیدا کنید، نه اینکه بدون بررسی صرفاً فایل را حذف کنید.


9. بررسی سرعت و فشار Disk

ممکن است فضای کافی داشته باشید اما Disk بسیار کند باشد.

برای بررسی I/O می‌توانید از ابزارهایی مانند iostat استفاده کنید.

در Ubuntu یا Debian ممکن است لازم باشد ابتدا بسته sysstat را نصب کنید:

sudo apt install sysstat

سپس:

iostat -xz 1

این دستور اطلاعاتی درباره وضعیت I/O دیسک ارائه می‌دهد.

یکی از مقادیر مهم:

%util

است.

اگر Disk برای مدت طولانی درگیر باشد، ممکن است عملیات I/O به یکی از عوامل اصلی کندی تبدیل شده باشد.


10. تفاوت CPU بالا با Disk I/O بالا

این دو مشکل گاهی با یکدیگر اشتباه گرفته می‌شوند.

CPU بالا

معمولاً زمانی مشاهده می‌شود که پردازنده درگیر اجرای عملیات محاسباتی زیادی باشد.

مثلاً:

  • پردازش سنگین PHP
  • برنامه Node.js
  • رمزنگاری
  • پردازش تصویر
  • Queryهای سنگین
  • پردازش‌های پس‌زمینه

Disk I/O بالا

در این حالت CPU ممکن است حتی کاملاً پر نباشد، اما سرور به دلیل خواندن و نوشتن زیاد روی Disk کند می‌شود.

علل رایج:

  • Database
  • Logهای زیاد
  • Backup
  • File processing
  • Swap
  • تعداد زیاد درخواست‌های هم‌زمان

11. بررسی Network

اگر منابع CPU، RAM و Disk طبیعی هستند اما سایت یا سرویس همچنان کند است، شبکه را بررسی کنید.

ابتدا اتصال اینترنت را آزمایش کنید:

ping -c 4 1.1.1.1

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

برای بررسی DNS:

ping -c 4 google.com

اگر IP قابل دسترسی است اما نام دامنه مشکل دارد، احتمال دارد مسئله مربوط به DNS باشد.


12. بررسی مصرف پهنای باند

گاهی VPS به دلیل مصرف بالای Network کند می‌شود.

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

iftop

استفاده کنید.

در صورت نصب نبودن:

sudo apt install iftop

سپس:

sudo iftop

این ابزار ارتباطات شبکه و مصرف پهنای باند را نمایش می‌دهد.

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

nload

13. بررسی اتصال‌های زیاد

تعداد بسیار زیاد Connectionها نیز می‌تواند باعث ایجاد مشکل شود.

برای مشاهده Connectionها:

ss -s

برای مشاهده اتصال‌های TCP:

ss -tan

اگر تعداد Connectionها غیرعادی زیاد است، باید بررسی کنید چه سرویسی باعث ایجاد آنها شده است.

برای مثال:

  • Web Server
  • Database
  • API
  • Bot
  • سرویس‌های داخلی
  • حملات یا درخواست‌های غیرعادی

14. بررسی Nginx یا Apache

اگر VPS برای میزبانی سایت استفاده می‌شود، Web Server یکی از اولین مواردی است که باید بررسی شود.

برای Nginx:

systemctl status nginx

برای Apache:

systemctl status apache2

همچنین وضعیت Logها را بررسی کنید.

Nginx:

tail -f /var/log/nginx/access.log

و:

tail -f /var/log/nginx/error.log

Apache:

tail -f /var/log/apache2/access.log

و:

tail -f /var/log/apache2/error.log

اگر تعداد زیادی درخواست غیرعادی مشاهده کردید، باید منبع آنها را بررسی کنید.


15. بررسی MySQL یا MariaDB

اگر VPS یک سایت PHP و MySQL دارد، Database می‌تواند یکی از عوامل اصلی کندی باشد.

وضعیت MySQL:

systemctl status mysql

برای مشاهده وضعیت کلی:

mysqladmin status

همچنین می‌توانید Queryهای در حال اجرا را بررسی کنید:

SHOW PROCESSLIST;

اگر Queryهای زیادی در وضعیت انتظار یا اجرای طولانی هستند، ممکن است مشکل از Database باشد.

در چنین شرایطی باید Queryهای سنگین، Indexها و ساختار جداول بررسی شوند.


16. بررسی PHP-FPM

در سایت‌های PHP، PHP-FPM نیز می‌تواند باعث مصرف بالای CPU یا RAM شود.

برای مشاهده وضعیت:

systemctl status php8.2-fpm

البته نسخه PHP ممکن است متفاوت باشد.

برای پیدا کردن نسخه PHP:

php -v

اگر تعداد زیادی PHP Worker فعال باشد و RAM کافی وجود نداشته باشد، VPS ممکن است با کمبود حافظه مواجه شود.


17. بررسی پردازش‌های پس‌زمینه

گاهی عامل کندی یک سرویس اصلی نیست، بلکه یک Cron Job یا برنامه پس‌زمینه است.

Cronهای کاربر را بررسی کنید:

crontab -l

Cronهای سیستم نیز می‌توانند در مسیرهای زیر قرار داشته باشند:

/etc/cron.d/
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.weekly/

Backupهای خودکار، اسکریپت‌های پردازش فایل یا Jobهای زمان‌بندی‌شده ممکن است در ساعت خاصی منابع زیادی مصرف کنند.


18. بررسی Load Average به شکل صحیح

فرض کنید سرور شما 4 هسته CPU دارد و Load به این شکل است:

load average: 0.50, 0.70, 0.80

این وضعیت معمولاً نشان‌دهنده فشار بالایی نیست.

اما اگر مشاهده کنید:

load average: 8.50, 9.20, 10.10

باید علت Load بالا را بررسی کنید.

نکته مهم این است که Load Average فقط به CPU محدود نمی‌شود و می‌تواند تحت تأثیر کارهای منتظر I/O نیز قرار بگیرد.

بنابراین برای پیدا کردن علت واقعی باید CPU، RAM و Disk I/O را در کنار هم بررسی کنید.


19. یک روش سریع برای پیدا کردن عامل اصلی

اگر VPS ناگهان کند شده، این مراحل را به ترتیب انجام دهید:

مرحله اول: CPU

top

سپس:

ps aux --sort=-%cpu | head -10

مرحله دوم: RAM

free -h

سپس:

ps aux --sort=-%mem | head -10

مرحله سوم: Disk

df -h

و:

du -h --max-depth=1 /var | sort -h

مرحله چهارم: Disk I/O

iostat -xz 1

مرحله پنجم: Network

ss -s

و در صورت نیاز:

iftop

مرحله ششم: سرویس‌ها

systemctl --type=service --state=running

سپس سرویس‌هایی که بیشترین منابع را مصرف می‌کنند بررسی کنید.


20. اگر CPU، RAM و Disk همگی خوب هستند اما VPS کند است

در این شرایط چند احتمال دیگر وجود دارد.

محدودیت منابع توسط شرکت VPS

برخی VPSها منابع خود را به صورت اشتراکی ارائه می‌کنند. ممکن است روی کاغذ CPU مشخصی داشته باشید اما در زمان‌های خاص عملکرد پردازنده یا Disk کاهش پیدا کند.

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

ممکن است خود VPS مشکلی نداشته باشد و مسیر ارتباطی بین کاربر و دیتاسنتر دچار مشکل شده باشد.

مشکل DNS

اگر فقط باز شدن دامنه کند است، DNS را بررسی کنید.

مشکل برنامه

گاهی VPS کاملاً سالم است اما خود برنامه، سایت یا Database باعث کندی شده است.

حملات یا ترافیک غیرعادی

افزایش ناگهانی درخواست‌ها می‌تواند منابع VPS را مصرف کند.


21. کارهایی که نباید بدون بررسی انجام دهید

وقتی VPS کند می‌شود، بعضی افراد سریعاً شروع به حذف فایل‌ها یا Kill کردن پردازش‌ها می‌کنند.

این کار می‌تواند مشکل را بدتر کند.

قبل از حذف فایل‌ها بررسی کنید چه چیزی آنها را ایجاد کرده است.

قبل از Kill کردن یک پردازش نیز مطمئن شوید که آن پردازش مربوط به سرویس مهمی نیست.

همچنین نصب تعداد زیادی ابزار Monitoring بدون نیاز می‌تواند خودش مقداری از منابع سرور را مصرف کند.


22. چه زمانی VPS را ارتقا دهیم؟

اگر بعد از بررسی مشخص شد که منابع واقعاً برای workload شما کافی نیستند، ارتقای VPS می‌تواند منطقی باشد.

برای مثال:

  • RAM دائماً نزدیک سقف است.
  • CPU در بیشتر ساعات روز تحت فشار است.
  • Disk I/O دائماً بالاست.
  • پهنای باند محدود شده است.
  • تعداد کاربران افزایش پیدا کرده است.

اما اگر مشکل ناشی از یک Query اشتباه، Memory Leak، Cron Job یا تنظیمات نادرست باشد، ارتقای VPS ممکن است فقط مشکل را موقتاً پنهان کند.


جمع‌بندی

کند شدن VPS را نباید فقط با افزایش منابع حل کرد. ابتدا باید مشخص شود کدام منبع یا سرویس باعث ایجاد مشکل شده است.

برای یک بررسی سریع می‌توانید این دستورات را اجرا کنید:

uptime
top
free -h
df -h
iostat -xz 1
ss -s
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10

با ترکیب این اطلاعات می‌توان مشخص کرد مشکل بیشتر به CPU، RAM، Disk I/O، فضای ذخیره‌سازی، Network یا یک سرویس خاص مربوط است.

مهم‌ترین نکته این است که قبل از ارتقای VPS، ابتدا علت واقعی کندی را پیدا کنید. در بسیاری از موارد، اصلاح یک سرویس، Query، Cron Job، تنظیمات Web Server یا مشکل Disk می‌تواند عملکرد سرور را بدون افزایش هزینه بهبود دهد.

🎯 چالش آموزشی
مباحثی که در این مقاله یاد گرفتید را در عمل پیاده‌سازی کنید و نتیجه را با ما به اشتراک بگذارید.
شروع چالش

💬 دیدگاه‌ها 0

هنوز دیدگاهی ثبت نشده است. اولین نفری باشید که نظر می‌دهید!

✍️ دیدگاه خود را بنویسید