Cách check tài nguyên VPS (CPU, RAM, disk) trong 30 giây

Tài liệu » Quản trị VPS - Server » Cách check tài nguyên VPS (CPU, RAM, disk) trong 30 giây

Cách check tài nguyên VPS (CPU, RAM, disk) trong 30 giây

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ỏiLệnhNgưỡng cảnh báo
1CPU đang busy bao nhiêu?uptime hoặc top -b -n1 \| head -3Load > số core
2RAM còn khả dụng bao nhiêu?free -havailable < 15% total
3Disk đầy chưa?df -h /Used > 85%
4Mạng đang in/out bao nhiêu?vnstat -tr 5Sá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% total là 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ạy ncdu / → 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 free của free -h thay vì available → tưởng VPS hết RAM nhưng thực tế còn dư

  • top rồi quên thoát → chiếm SSH session vô ích. Sửa: nhấn q

  • Coi Use% disk > 90% là chuyện thường — sai, MySQL crash trong vài phút khi Use% > 95%

  • Quên check dmesg khi service tự chết — log OOM killer nằm ở đó, không phải /var/log/syslog

  • Cài htop rồi luôn dùng htop cho mọi việctop -b -n1 cò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ứngGiải pháp ngayUpgrade nếu
Disk 95%, log đầyjournalctl --vacuum-time=7dVẫn 90% sau dọn → +disk
RAM 95%, swap 80%Restart service ăn RAMLặp lại trong 24h → +RAM
CPU load 2× số coreTìm process bug + restartLặp lại > 3 lần → +CPU
Bandwidth gần limitBật Cloudflare cacheVẫn full sau cache → upgrade plan

💡 Tip cuối: Trước khi upgrade, đo 7 ngày liên tục với vps-status cron — đừng quyết định dựa vào 1 spike.

Key takeaways

  • uptime — 5s biết CPU load

  • free -h — nhìn cột available, không phải free

  • df -h / — báo động khi Use% > 85%

  • vnstat — bandwidth không tự magic, phải cài + đợi

  • vps-status — 1 lệnh ra full report (script trong bài)

  • dmesg | grep killed — phát hiện OOM kill history

  • du -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.

Lên đầu trang