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

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

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

کندی VPS همیشه به معنی ضعیف بودن CPU نیست. در بسیاری از مواقع، مشکل از مصرف بالای RAM، پر شدن دیسک، سرعت پایین I/O، تعداد زیاد پردازش‌ها یا حتی مشکلات شبکه است.

در این آموزش یاد می‌گیریم چطور در لینوکس علت کندی VPS را پیدا کنیم و تشخیص دهیم مشکل مربوط به:

  • CPU
  • RAM
  • Disk / I/O
  • Network
  • Processها
  • سرویس‌های در حال اجرا

است.


فهرست مطالب

۱. ابتدا وضعیت کلی VPS را بررسی کنید

اولین قدم این است که یک تصویر کلی از وضعیت سرور داشته باشیم.

با SSH وارد VPS شوید و دستور زیر را اجرا کنید:

uptime

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

08:20:10 up 15 days, 4:32, 2 users, load average: 4.20, 3.80, 3.10

قسمت مهم:

load average: 4.20, 3.80, 3.10

این اعداد نشان می‌دهند در ۱، ۵ و ۱۵ دقیقه اخیر چه میزان کاری در صف اجرای سیستم قرار داشته است.

اما یک نکته مهم وجود دارد:

Load Average را نباید بدون توجه به تعداد هسته‌های CPU تفسیر کرد.

مثلاً اگر VPS شما یک CPU با ۱ هسته داشته باشد:

load average: 4.20

می‌تواند نشان‌دهنده فشار بسیار زیاد باشد.

اما اگر VPS شما 8 هسته CPU داشته باشد:

load average: 4.20

ممکن است هنوز CPU کاملاً اشباع نشده باشد.

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

nproc

مثلاً:

8

یعنی سیستم 8 هسته منطقی در اختیار دارد.


۲. بررسی CPU

اگر VPS کند شده، CPU یکی از اولین مواردی است که باید بررسی شود.

دستور زیر را اجرا کنید:

top

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

htop

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

اگر htop نصب نیست:

sudo apt install htop

سپس:

htop

۳. چگونه CPU را در خروجی top بررسی کنیم؟

در top معمولاً چیزی شبیه این مشاهده می‌کنید:

%Cpu(s): 85.2 us, 8.3 sy, 0.0 ni, 5.2 id, 1.3 wa

مهم‌ترین بخش‌ها:

us

زمانی که CPU صرف اجرای برنامه‌های کاربران می‌کند.

مثلاً:

us = 85%

یعنی برنامه‌های در حال اجرا مقدار زیادی از CPU را مصرف می‌کنند.

sy

زمانی که CPU درگیر کارهای مربوط به Kernel سیستم‌عامل است.

اگر مقدار sy بسیار بالا باشد، ممکن است مشکل از تعداد زیاد عملیات سیستمی، درایورها یا نوع خاصی از workload باشد.

id

زمان بیکار بودن CPU.

مثلاً:

id = 2%

یعنی CPU تقریباً کاملاً مشغول است.

wa

زمانی که CPU منتظر عملیات I/O است.

مثلاً:

wa = 30%

در این حالت ممکن است مشکل اصلی CPU نباشد و سرور به دلیل کندی Disk منتظر I/O باشد.


۴. پیدا کردن برنامه‌ای که CPU زیادی مصرف می‌کند

در top پردازش‌ها معمولاً بر اساس مصرف CPU نمایش داده می‌شوند.

مثلاً:

PID     USER     %CPU     %MEM     COMMAND
1254    www-data  95.2     3.1      php-fpm
2210    root      72.4     1.2      mysqld
3120    root      40.1     0.8      node

در این مثال:

php-fpm

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

بنابراین باید بررسی کنید چه چیزی باعث شده PHP-FPM این مقدار CPU مصرف کند.


۵. مشاهده پردازش‌های پرمصرف با ps

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

ps aux --sort=-%cpu | head

برای مثال:

USER       PID %CPU %MEM COMMAND
www-data  1254 95.2  3.1 php-fpm
mysql     2210 72.4  8.2 mysqld
root      3120 40.1  2.1 node

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


۶. اگر CPU بالا نیست اما VPS کند است چه؟

این یکی از اشتباهات رایج است.

ممکن است CPU فقط 30 درصد مصرف داشته باشد اما سرور همچنان بسیار کند باشد.

در چنین شرایطی باید RAM، Disk و Network را بررسی کنید.


۷. بررسی RAM

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

free -h

مثلاً:

               total        used        free
Mem:            8.0Gi       7.4Gi       200Mi
Swap:           2.0Gi       1.8Gi       200Mi

در این مثال RAM تقریباً پر شده و Swap نیز مصرف زیادی دارد.


۸. Swap چیست؟

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

به این فضای Disk:

Swap

گفته می‌شود.

Swap از RAM بسیار کندتر است.

بنابراین اگر سیستم دائماً مجبور باشد اطلاعات را بین RAM و Swap جابه‌جا کند، VPS ممکن است به‌شدت کند شود.

برای بررسی Swap:

free -h

و:

swapon --show

۹. بررسی دقیق‌تر RAM

برای مشاهده وضعیت حافظه می‌توانید از:

vmstat 1

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

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

اگر مقادیر مربوط به swap به شکل مداوم افزایش پیدا کنند، ممکن است سیستم تحت فشار حافظه باشد.


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

دستور:

ps aux --sort=-%mem | head

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

مثلاً:

USER      PID   %CPU  %MEM COMMAND
mysql    2210  30.2  35.5 mysqld
www-data 1254  10.2  20.4 php-fpm
root     3120   4.1  12.3 node

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


۱۱. اگر RAM دائماً پر می‌شود چه کنیم؟

اول باید مشخص کنید کدام برنامه RAM را مصرف می‌کند.

ممکن است دلیل یکی از موارد زیر باشد:

  • تعداد زیاد درخواست‌های سایت
  • تنظیمات نامناسب PHP-FPM
  • مصرف بالای MySQL
  • Memory Leak
  • اجرای چند سرویس سنگین
  • تعداد زیاد Containerها
  • پردازش‌های اضافی

به جای اینکه فقط VPS را Restart کنید، باید پردازش مشکل‌دار را پیدا کنید.


۱۲. بررسی Disk

گاهی اوقات مشکل VPS نه CPU است و نه RAM.

ممکن است Disk عامل اصلی کندی باشد.

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

df -h

مثلاً:

Filesystem      Size  Used Avail Use%
/dev/vda1        80G   78G  2.0G  98%

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


۱۳. پیدا کردن پوشه‌های حجیم

برای بررسی فضای مصرف‌شده:

sudo du -sh /* 2>/dev/null

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

sudo du -sh /var/* 2>/dev/null

و برای بررسی لاگ‌ها:

sudo du -sh /var/log/*

گاهی اوقات فایل‌های Log حجم بسیار زیادی اشغال می‌کنند.


۱۴. فقط پر بودن Disk مشکل نیست

ممکن است فضای Disk کافی داشته باشید اما Disk از نظر سرعت I/O دچار مشکل باشد.

مثلاً:

CPU: 20%
RAM: 40%
Disk usage: 30%

ولی VPS همچنان کند باشد.

در این شرایط باید I/O را بررسی کنید.


۱۵. بررسی Disk I/O با iostat

اگر iostat روی سیستم نصب نیست:

sudo apt install sysstat

سپس:

iostat -xz 1

این دستور اطلاعات مربوط به Disk را نمایش می‌دهد.

موارد مهم شامل:

%util
await
r/s
w/s

هستند.


۱۶. معنی %util چیست؟

مقدار:

%util

نشان می‌دهد دستگاه ذخیره‌سازی چه مقدار از زمان را مشغول پردازش I/O بوده است.

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

اما باید توجه داشت که تفسیر دقیق این مقدار به نوع Storage و محیط مجازی‌سازی بستگی دارد.


۱۷. معنی await چیست؟

مقدار:

await

مدت زمانی را نشان می‌دهد که درخواست‌های I/O برای تکمیل شدن منتظر می‌مانند.

اگر await افزایش زیادی داشته باشد، ممکن است Storage یا لایه I/O با تأخیر مواجه شده باشد.

در VPSهای اشتراکی، عملکرد Disk می‌تواند به وضعیت Host یا Storage زیرساخت ارائه‌دهنده نیز وابسته باشد.


۱۸. پیدا کردن برنامه‌ای که Disk را تحت فشار قرار داده

برای پیدا کردن پردازش‌هایی که I/O زیادی دارند می‌توانید از:

sudo iotop

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

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

sudo apt install iotop

سپس:

sudo iotop

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


۱۹. بررسی Network

اگر CPU، RAM و Disk مشکلی ندارند، نوبت Network است.

ممکن است VPS از نظر منابع داخلی کاملاً سالم باشد اما مشکل در ارتباط شبکه وجود داشته باشد.

ابتدا اتصال را بررسی کنید:

ping 1.1.1.1

مثلاً:

64 bytes from 1.1.1.1: icmp_seq=1 ttl=56 time=20 ms

زمان:

20 ms

در این مثال پایین است.

اما اگر مقدارهایی مثل:

500 ms

یا:

1000 ms

مشاهده شود، باید شبکه را دقیق‌تر بررسی کرد.


۲۰. بررسی Packet Loss

فقط Ping پایین کافی نیست.

ممکن است Packet Loss داشته باشید.

مثلاً:

10 packets transmitted, 10 received, 0% packet loss

این وضعیت مناسب است.

اما:

10 packets transmitted, 7 received, 30% packet loss

نشان می‌دهد بخشی از Packetها از بین رفته‌اند.


۲۱. بررسی مسیر شبکه با traceroute

برای بررسی مسیر اتصال:

traceroute 1.1.1.1

اگر نصب نیست:

sudo apt install traceroute

در برخی شبکه‌ها ممکن است بعضی Hopها به Ping یا Traceroute پاسخ ندهند؛ بنابراین نمایش * به‌تنهایی به معنی خراب بودن همان مسیر نیست.


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

اگر احساس می‌کنید VPS از نظر Network تحت فشار است، می‌توانید از ابزارهایی مانند:

iftop

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

نصب:

sudo apt install iftop

سپس:

sudo iftop

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


۲۳. پیدا کردن IPهایی که بیشترین اتصال را دارند

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

ss -tunap

همچنین می‌توانید تعداد اتصال‌ها را بررسی کنید:

ss -s

اگر تعداد Connectionها غیرعادی باشد، باید مشخص شود چه سرویس یا برنامه‌ای باعث ایجاد آنها شده است.


۲۴. بررسی سرویس‌های در حال اجرا

برای مشاهده سرویس‌های فعال:

systemctl --type=service --state=running

ممکن است سرویس‌هایی در VPS اجرا شوند که دیگر به آنها نیاز ندارید.

مثلاً:

  • Apache
  • Nginx
  • MySQL
  • Redis
  • Docker
  • PHP-FPM
  • Node.js
  • PostgreSQL

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


۲۵. بررسی مصرف CPU سرویس‌ها

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

systemd-cgtop

این ابزار به شما کمک می‌کند مصرف منابع را در سطح سرویس‌ها مشاهده کنید.


۲۶. بررسی Processهای Zombie

گاهی اوقات پردازش‌های Zombie نیز می‌توانند نشانه وجود مشکل در یک برنامه باشند.

برای بررسی:

ps aux | grep Z

البته وجود یک Zombie به‌تنهایی الزاماً به معنی مشکل جدی نیست؛ تعداد و رفتار آن اهمیت دارد.


۲۷. بررسی خطاهای سیستم

برای مشاهده خطاهای مهم سیستم:

journalctl -p 3 -xb

همچنین می‌توانید پیام‌های Kernel را بررسی کنید:

dmesg -T | tail -100

در این قسمت به دنبال مواردی مانند:

Out of memory
I/O error
disk error
network error

بگردید.


۲۸. بررسی Out of Memory

اگر لینوکس به دلیل کمبود RAM مجبور به کشتن یک Process شده باشد، ممکن است در Logها پیام‌هایی مربوط به:

Out of memory

یا:

OOM Killer

مشاهده کنید.

برای جستجو:

dmesg -T | grep -i "out of memory"

یا:

journalctl -k | grep -i "oom"

اگر چنین پیام‌هایی وجود داشته باشد، باید مصرف RAM و تنظیمات برنامه‌ها بررسی شود.


۲۹. بررسی فضای Inode

گاهی اوقات Disk از نظر حجم پر نیست، اما تعداد فایل‌ها بسیار زیاد شده است.

برای بررسی:

df -i

مثلاً:

Filesystem     Inodes   IUsed   IFree IUse%
/dev/vda1      5.0M     5.0M       0  100%

در این حالت حتی اگر چند گیگابایت فضای خالی داشته باشید، ایجاد فایل‌های جدید ممکن است با مشکل مواجه شود.


۳۰. بررسی دمای CPU در VPS

در VPS معمولاً کنترل مستقیم دمای CPU مانند سرور فیزیکی در اختیار شما نیست.

بنابراین اگر VPS کند شده، بهتر است ابتدا منابع قابل مشاهده مانند:

  • CPU
  • RAM
  • Swap
  • Disk I/O
  • Network
  • Processها

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

اگر تمام این موارد طبیعی هستند ولی عملکرد VPS همچنان غیرعادی است، ممکن است مشکل در زیرساخت ارائه‌دهنده VPS یا Host فیزیکی باشد.


۳۱. یک روش سریع برای پیدا کردن مشکل

اگر عجله دارید، این دستورات را به ترتیب اجرا کنید:

uptime

سپس:

nproc

بعد:

top

سپس:

free -h

بعد:

df -h

و:

iostat -xz 1

در نهایت:

ss -s

و:

ping 1.1.1.1

این بررسی اولیه معمولاً مشخص می‌کند مشکل در کدام بخش قرار دارد.


۳۲. جدول تشخیص سریع مشکل

نشانه احتمال مشکل
CPU نزدیک 100٪ پردازش CPU-intensive
Load بالا + CPU بالا فشار پردازشی
Load بالا + CPU پایین + iowait بالا احتمال مشکل I/O
RAM تقریباً پر کمبود RAM
Swap دائماً در حال استفاده فشار حافظه
Disk نزدیک 100٪ کمبود فضای ذخیره‌سازی
%util بالا فشار روی Storage
await بالا تأخیر I/O
Packet Loss مشکل شبکه یا مسیر
Ping بسیار بالا Latency شبکه
Connectionهای بسیار زیاد احتمال فشار شبکه/سرویس
OOM در Logها کمبود حافظه
Inode نزدیک 100٪ تعداد فایل بسیار زیاد

۳۳. یک سناریوی واقعی برای تشخیص

فرض کنیم کاربر می‌گوید:

VPS من خیلی کند شده است.

اول:

uptime

خروجی:

load average: 8.5, 7.9, 6.8

تعداد CPU:

nproc

خروجی:

8

Load نسبتاً بالاست، پس بررسی CPU را انجام می‌دهیم:

top

و می‌بینیم:

%Cpu(s): 25 us, 5 sy, 5 id, 65 wa

اینجا یک نکته مهم مشخص می‌شود:

wa = 65%

بنابراین احتمال دارد مشکل اصلی CPU نباشد و سیستم بخش زیادی از زمان را منتظر I/O باشد.

سپس:

iostat -xz 1

را اجرا می‌کنیم.

اگر Disk نیز تحت فشار باشد، باید بررسی کنیم کدام Process باعث I/O شده است:

sudo iotop

ممکن است مشخص شود:

mysqld

یا:

php-fpm

در حال انجام حجم زیادی از عملیات Disk است.

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


۳۴. اگر CPU، RAM و Disk طبیعی بودند

فرض کنیم:

CPU = 20%
RAM = 40%
Disk = 30%

اما سایت همچنان کند است.

در این شرایط:

ping 1.1.1.1

را اجرا کنید.

سپس:

ss -s

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

sudo iftop

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

اگر Packet Loss، Latency بالا یا حجم غیرعادی Connection مشاهده شد، باید مشکل Network یا سرویس‌های شبکه را بررسی کنید.

۳۵. اگر همه‌چیز طبیعی بود ولی VPS هنوز کند است

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

مشکل Application

ممکن است خود برنامه کند باشد.

مثلاً:

  • Queryهای کند MySQL
  • کد PHP بهینه نشده
  • درخواست‌های زیاد
  • API خارجی کند
  • Memory Leak
  • پردازش‌های طولانی

مشکل Database

برای مثال MySQL ممکن است Queryهای سنگین اجرا کند.

می‌توانید Processهای MySQL را بررسی کنید:

SHOW PROCESSLIST;

مشکل Virtualization Host

در VPSهای مجازی، منابع فیزیکی توسط زیرساخت ارائه‌دهنده مدیریت می‌شوند.

ممکن است VPS شما از نظر داخلی وضعیت طبیعی داشته باشد اما Host یا Storage زیرساخت ارائه‌دهنده دچار فشار باشد.

در چنین شرایطی باید اطلاعات جمع‌آوری‌شده را به پشتیبانی ارائه‌دهنده VPS بدهید.


۳۶. آیا Restart کردن VPS مشکل را حل می‌کند؟

Restart ممکن است به صورت موقت مشکل را برطرف کند، اما معمولاً علت اصلی مشکل را مشخص نمی‌کند.

مثلاً اگر یک برنامه Memory Leak داشته باشد، بعد از Restart:

RAM = 20%

می‌شود.

اما بعد از چند ساعت:

RAM = 90%

خواهد شد.

بنابراین اگر VPS مرتباً کند می‌شود، قبل از Restart کردن بهتر است اطلاعاتی مانند:

top
free -h
df -h
iostat -xz 1
ss -s

را جمع‌آوری کنید.


۳۷. چک‌لیست نهایی عیب‌یابی VPS

هر زمان VPS کند شد، این مراحل را انجام دهید:

مرحله اول: CPU

uptime
nproc
top
ps aux --sort=-%cpu | head

مرحله دوم: RAM

free -h
ps aux --sort=-%mem | head
vmstat 1

مرحله سوم: Disk

df -h
df -i
iostat -xz 1
sudo iotop

مرحله چهارم: Network

ping 1.1.1.1
ss -s
ss -tunap
sudo iftop

مرحله پنجم: Logs

journalctl -p 3 -xb
dmesg -T | tail -100

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

systemctl --type=service --state=running
systemd-cgtop

نتیجه‌گیری

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

اگر CPU بالا باشد، باید Processهای پرمصرف را پیدا کنیم.

اگر RAM پر باشد، باید مصرف حافظه و Swap بررسی شود.

اگر iowait یا Disk I/O بالا باشد، باید Storage و Processهای درگیر در I/O بررسی شوند.

اگر منابع سیستم طبیعی باشند اما ارتباط با VPS کند باشد، باید Network، Latency، Packet Loss و Connectionها بررسی شوند.

در نهایت، اگر هیچ‌کدام از این موارد مشکل واضحی نشان ندادند، احتمال دارد مشکل از خود Application، Database یا زیرساخت ارائه‌دهنده VPS باشد.

مهم‌ترین اصل در عیب‌یابی VPS این است: اول اندازه‌گیری، سپس پیدا کردن عامل، و بعد تغییر تنظیمات.

به جای اینکه بدون بررسی CPU، RAM یا Disk را افزایش دهید، ابتدا با ابزارهای لینوکس مشخص کنید مشکل دقیقاً کجاست.

🖥️

یک VPS پایدار برای اجرای روان پروژه‌های شما

اگر VPS شما دائماً با کندی، کمبود منابع یا افت عملکرد مواجه می‌شود، قبل از افزایش منابع بهتر است علت مشکل را شناسایی کنید. انتخاب یک سرور مجازی با منابع متناسب می‌تواند در اجرای پایدارتر وب‌سایت‌ها و برنامه‌های شما مؤثر باشد.

در ایرانیکا سرور می‌توانید پلن‌های VPS را بررسی کرده و بر اساس نیاز پروژه، میزان CPU، RAM، فضای ذخیره‌سازی و نوع استفاده، سرور مناسب خود را انتخاب کنید.

🚀 مشاهده پلن‌های VPS⚡ منابع متناسب با نیاز پروژه

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

💬 دیدگاه‌ها 0

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

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