Cách check tài nguyên VPS (CPU, RAM, disk) trong 30 giây
TL;DR
Mở SSH → gõ 4 lệnh → biết VPS đang khoẻ hay sắp sập trong đúng 30 giây.
⏱ Tổng: 30 giây — không cần web panel, không cần plugin
✅ 4 thứ kiểm tra: CPU load, RAM available, disk used, network in/out
📝 Bonus: 1 script bash gộp 4 lệnh thành 1 lệnh duy nhất
vps-status🚨 Cảnh báo: Khi nào nên upgrade VPS, khi nào chỉ cần dọn dẹp
Vì sao cần check tài nguyên VPS thường xuyên?
90% lỗi VPS production đều bắt đầu bằng 1 trong 3 thứ: hết RAM, full disk, hoặc CPU 100%. Phát hiện sớm = fix trong 5 phút thay vì wake-up 3h sáng vì site sập.
Pain point thường gặp:
🐌 Site load chậm bất thường mà không biết bottleneck ở đâu
💥 Service tự crash rồi tự restart liên tục — log đầy “OOM killed”
📉 Database query chậm dần khi disk gần full (>85%)
💸 Lỡ tiền upgrade VPS trong khi chỉ cần xoá cache là đủ
Bài này dạy bạn routine 30 giây check sức khoẻ VPS — gõ trước khi đi ngủ + sau khi deploy version mới.
💡 Mẹo: Bookmark bài, copy script
vps-statusở cuối — chạy 1 lệnh duy nhất là xong.
4 câu hỏi VPS phải trả lời được trong 30 giây
Tóm gọn: Đừng xem 50 metrics — chỉ cần 4 con số sau là đủ phát hiện 90% vấn đề.
| # | Câu hỏi | Lệnh | Ngưỡng cảnh báo |
|---|---|---|---|
| 1 | CPU đang busy bao nhiêu? | uptime hoặc top -b -n1 \| head -3 | Load > số core |
| 2 | RAM còn khả dụng bao nhiêu? | free -h | available < 15% total |
| 3 | Disk đầy chưa? | df -h / | Used > 85% |
| 4 | Mạng đang in/out bao nhiêu? | vnstat -tr 5 | Sát limit gói VPS |
Phần dưới em đi từng câu — copy lệnh chạy ngay.
Câu 1 — CPU đang busy bao nhiêu? Lệnh uptime
Tóm gọn: Lệnh ngắn nhất, 5 giây biết CPU healthy hay overloaded.
uptime
Output:
14:23:01 up 12 days, 3:42, 2 users, load average: 0.45, 0.62, 0.58
3 con số load average quan trọng nhất:
1 phút gần nhất (0.45) → trạng thái hiện tại
5 phút gần nhất (0.62) → trạng thái trung hạn
15 phút gần nhất (0.58) → trạng thái dài hạn
So sánh với số CPU core của VPS (kiểm bằng nproc):
Load < số core × 0.7 → khoẻ
Load = số core → busy nhưng OK
Load > số core × 2 → overload, cần can thiệp
💡 Mẹo: VPS 2 core mà load average 5 phút = 4 → CPU đang quá tải gấp đôi. Restart service hoặc upgrade.
Sâu hơn: process nào đang ăn CPU?
top -b -n1 -o %CPU | head -15
In top 10 process sort theo CPU%. Khoanh vùng thủ phạm trong 3 giây.
Câu 2 — RAM còn khả dụng bao nhiêu? Lệnh free -h
Tóm gọn: Đừng nhìn cột free — nhìn cột available mới đúng.
free -h
Output:
total used free shared buff/cache available
Mem: 1.9Gi 1.2Gi 180Mi 12Mi 540Mi 560Mi
Swap: 512Mi 12Mi 500Mi
Cột quan trọng:
total— tổng RAM VPS cóused— đang dùng (gồm cả buff/cache)available— RAM thực sự sẵn sàng cấp cho app mới
⚠️ Warning:
available < 15% totallà báo động. Sắp OOM kill app.
Process nào ngốn RAM nhất?
ps aux --sort=-%mem | head -6
Top 5 process ăn RAM. PHP-FPM với MySQL thường đứng đầu site WordPress.
Check OOM kill history
sudo dmesg | grep -i "killed process" | tail -5
Nếu thấy “Killed process X (mysqld)” → kernel đã giết MySQL vì hết RAM. Cần upgrade RAM hoặc tune my.cnf.
Câu 3 — Disk đầy chưa? Lệnh df -h /
Tóm gọn: Use% > 85% là báo động — MySQL/log fill disk = service crash ngay lập tức.
df -h /
Output:
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 42G 5.5G 89% /
Use% 89% là vùng đỏ — cần dọn dẹp NGAY.
Tìm folder nào ngốn disk nhất
du -h --max-depth=1 / 2>/dev/null | sort -h | tail -10
Output mẫu:
180M /etc
2.1G /home
4.5G /usr
6.8G /root
12G /var
35G /data
/var lớn bất thường? Check log:
du -h --max-depth=1 /var/log 2>/dev/null | sort -h | tail
💡 Mẹo: Cài
ncdu(sudo apt install ncdu -y) → chạyncdu /→ giao diện text-mode duyệt folder bằng phím tắt, tìm thủ phạm nhanh hơn 10×.
Cleanup nhanh các thủ phạm phổ biến
# Log cũ
sudo journalctl --vacuum-time=7d
# APT cache
sudo apt clean
# Docker images không dùng (nếu có Docker)
docker system prune -af
# Tmp file > 7 ngày
sudo find /tmp -type f -atime +7 -delete
Thường giải phóng được 2-10 GB ngay.
Câu 4 — Mạng đang in/out bao nhiêu? vnstat
Tóm gọn: Bandwidth gần limit gói VPS = phải nâng plan hoặc cache CDN gấp.
Cài 1 lần:
sudo apt install vnstat -y
sudo systemctl enable --now vnstat
sleep 60 # cần 1 phút thu thập data ban đầu
Sau đó:
vnstat -h # in/out theo từng giờ trong 24h qua
vnstat -d # tổng hàng ngày
vnstat --tr 5 # in/out realtime trong 5 giây
Output vnstat -d:
day rx | tx | total | avg. rate
----------+--------+--------------+--------------+---------
today 245.2 MiB | 1.85 GiB | 2.09 GiB | 198.6 kbit/s
yesterday 312.4 MiB | 2.31 GiB | 2.61 GiB | 248.1 kbit/s
So sánh với gói VPS:
VPS 1 TB/tháng = ~33 GB/ngày → 2 GB/day là OK
VPS unlimited bandwidth (như VSIS) → không lo
Process nào đang dùng nhiều bandwidth?
sudo apt install iftop -y
sudo iftop -i eth0 # realtime in/out per connection
Nhấn q thoát.
BONUS: 1 script gộp tất cả thành lệnh vps-status
Tóm gọn: Em viết sẵn — copy vào VPS, chạy vps-status là ra full report 30 giây.
Cài đặt 1 lần:
sudo tee /usr/local/bin/vps-status > /dev/null <<'EOF'
#!/bin/bash
echo "═══ VPS STATUS @ $(date '+%Y-%m-%d %H:%M:%S') ═══"
echo ""
echo "▶ CPU LOAD ($(nproc) cores):"
uptime | awk -F'load average:' '{print " "$2}'
echo ""
echo "▶ TOP 5 CPU:"
ps -eo pid,pcpu,comm --sort=-pcpu | head -6 | tail -5 | awk '{printf " %5s%6s%% %s\n",$1,$2,$3}'
echo ""
echo "▶ RAM:"
free -h | awk 'NR==2{printf " Used %s / %s | Available %s\n", $3,$2,$7}'
echo ""
echo "▶ TOP 5 RAM:"
ps -eo pid,pmem,comm --sort=-pmem | head -6 | tail -5 | awk '{printf " %5s%6s%% %s\n",$1,$2,$3}'
echo ""
echo "▶ DISK:"
df -h / | awk 'NR==2{printf " Used %s / %s (%s) | Free %s\n", $3,$2,$5,$4}'
echo ""
echo "▶ NETWORK (interface eth0):"
which vnstat >/dev/null && vnstat --oneline | awk -F\; '{printf " Today RX %s | TX %s\n", $4,$5}' || echo " (vnstat not installed — sudo apt install vnstat -y)"
echo ""
echo "▶ UPTIME:"
uptime -p | sed 's/^/ /'
EOF
sudo chmod +x /usr/local/bin/vps-status
Sau đó mỗi lần check chỉ cần:
vps-status
Output mẫu:
═══ VPS STATUS @ 2026-05-12 14:23:01 ═══
▶ CPU LOAD (2 cores):
0.45, 0.62, 0.58
▶ TOP 5 CPU:
1234 12.3% php-fpm8.3
1567 8.7% mysql
...
▶ RAM:
Used 1.2Gi / 1.9Gi | Available 560Mi
▶ DISK:
Used 42G / 50G (89%) | Free 5.5G
▶ NETWORK (interface eth0):
Today RX 245.2 MiB | TX 1.85 GiB
▶ UPTIME:
up 12 days, 3 hours, 42 minutes
💡 Mẹo: Cron 6h/lần gửi report qua Telegram — bài tiếp theo trong serie sẽ hướng dẫn.
Sai lầm phổ biến khi check tài nguyên
❌ Nhìn cột
freecủafree -hthay vìavailable→ tưởng VPS hết RAM nhưng thực tế còn dư❌
toprồi quên thoát → chiếm SSH session vô ích. Sửa: nhấnq❌ Coi
Use% disk > 90%là chuyện thường — sai, MySQL crash trong vài phút khiUse% > 95%❌ Quên check
dmesgkhi service tự chết — log OOM killer nằm ở đó, không phải/var/log/syslog❌ Cài
htoprồi luôn dùnghtopcho mọi việc —top -b -n1còn nhanh hơn cho one-shot
Khi nào upgrade VPS, khi nào chỉ cần dọn dẹp?
| Triệu chứng | Giải pháp ngay | Upgrade nếu |
|---|---|---|
| Disk 95%, log đầy | journalctl --vacuum-time=7d | Vẫn 90% sau dọn → +disk |
| RAM 95%, swap 80% | Restart service ăn RAM | Lặp lại trong 24h → +RAM |
| CPU load 2× số core | Tìm process bug + restart | Lặp lại > 3 lần → +CPU |
| Bandwidth gần limit | Bật Cloudflare cache | Vẫn full sau cache → upgrade plan |
💡 Tip cuối: Trước khi upgrade, đo 7 ngày liên tục với
vps-statuscron — đừng quyết định dựa vào 1 spike.
Key takeaways
uptime— 5s biết CPU loadfree -h— nhìn cộtavailable, không phảifreedf -h /— báo động khiUse% > 85%vnstat— bandwidth không tự magic, phải cài + đợivps-status— 1 lệnh ra full report (script trong bài)dmesg | grep killed— phát hiện OOM kill historydu -h --max-depth=1— tìm folder ăn disk nhanh nhất
FAQ
Q: VPS 1GB RAM mà available chỉ còn 100MB, có nên upgrade không?
A: Chưa cần. Restart php-fpm và MySQL → quan sát 24h. Nếu available lại tụt nhanh → upgrade. Nếu ổn định → MySQL/PHP đang cache hợp lý, không cần upgrade.
Q: htop báo 80% RAM nhưng free -h nói còn 600MB — tin cái nào?
A: Tin free -h. htop cộng cả buff/cache vào used nên trông cao. Cột available của free mới đúng.
Q: Có nên cài web panel để monitor cho dễ?
A: Tuỳ. Web panel (cPanel, aaPanel) ăn 200-500MB RAM + dễ exploit. Script vps-status 0 RAM, 0 attack surface. Nếu sếp/khách cần GUI → cài Netdata (free, 50MB RAM, web UI realtime).
Q: Bao lâu check 1 lần?
A: Sau mỗi deploy + trước khi đi ngủ. Setup cron vps-status 6h/lần ghi log + alert Telegram khi vượt ngưỡng — bài tiếp theo hướng dẫn.
Q: VPS RAM 1GB chạy WordPress được không?
A: Đủ cho 1 site WordPress traffic vừa + MySQL + NGINX nếu tune kỹ. Không hợp Docker, Redis, Node.js heavy. Spec đề xuất xem vsis.net/vps.
Cần VPS Linux đủ tài nguyên cho production?
VSIS có VPS Linux từ 99k/tháng (1GB RAM, 25GB SSD), preinstall Ubuntu 24.04 LTS — sẵn sàng chạy script vps-status ngay sau khi nhận thông tin SSH.
👉 Đăng ký VPS Linux: vsis.net/vps
📺 Xem video 60 giây tóm tắt: link Reels (sẽ cập nhật khi đăng FB)
📖 Bài tiếp theo: “Xem ai đang đăng nhập VPS + lịch sử login” — đăng Thứ 6 tuần này.



