اگر 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 را افزایش دهید، ابتدا با ابزارهای لینوکس مشخص کنید مشکل دقیقاً کجاست.
💬 دیدگاهها 0
هنوز دیدگاهی ثبت نشده است. اولین نفری باشید که نظر میدهید!
✍️ دیدگاه خود را بنویسید