❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.

Load average cao là cơn ác mộng của mọi admin. VPS bỗng nhiên lag, website không load được, SSH vào cũng chậm chạp. Nhưng con số load average thực ra báo hiệu điều gì? Và quan trọng hơn, làm sao biết nó cao hay chưa, nguyên nhân từ đâu?

Bài này sẽ giúp bạn đọc hiểu load average đúng cách, phân biệt các loại tắc nghẽn khác nhau, và có quy trình xử lý nhanh khi VPS quá tải.

Load average là gì?

Bridge with traffic representing load average queues

Load average đo lường số lượng tiến trình đang đợi CPU hoặc I/O tại một thời điểm. Khác với CPU usage (đo tỷ lệ %), load average đo số lượng công việc xếp hàng.

Hình dung như cầu có 4 làn xe (4 CPU cores). Load average = 4.0 nghĩa là có 4 xe đang chạy trên cầu (100% capacity). Load average = 8.0 nghĩa là có 4 xe trên cầu + 4 xe xếp hàng chờ (200% capacity).

# Xem load average hiện tại
uptime

Output mẫu:

 15:23:45 up 7 days,  3:42,  2 users,  load average: 2.15, 1.89, 1.65

Ba con số cuối là load average trong 1 phút, 5 phút, và 15 phút gần nhất.

Đọc hiểu load average đúng cách

So sánh với số CPU cores

Bước đầu tiên là xem VPS có bao nhiêu CPU cores:

# Đếm số CPU cores
nproc

# Hoặc xem chi tiết lscpu | grep "^CPU(s):"

Output mẫu:

4

Quy tắc cơ bản:

  • Load = số cores: VPS đang chạy ở 100% capacity
  • Load > số cores: VPS quá tải, có công việc đang xếp hàng chờ
  • Load < số cores: VPS còn nhàn rỗi

Ví dụ VPS 4 cores:

  • Load 2.0 = 50% capacity (bình thường)
  • Load 4.0 = 100% capacity (đầy nhưng chưa quá tải)
  • Load 6.0 = 150% capacity (quá tải, 2 tiến trình đang chờ)

💡 Mẹo: Load average > số CPU cores = VPS quá tải, cần xử lý ngay

Thresholds cần chú ý

  • 0.7 × cores: Mức cần theo dõi. VPS 4 cores thì load 2.8 cần để ý
  • 1.0 × cores: Mức cần xử lý. Load 4.0 trên VPS 4 cores cần can thiệp
  • 5.0 × cores: Mức khẩn cấp. Load 20.0 trên VPS 4 cores = VPS đã quá tải nghiêm trọng

Xu hướng tăng giảm

So sánh ba con số để biết xu hướng:

  • 1min > 15min: Load đang tăng (có thể báo hiệu sự cố)
  • 1min < 15min: Load đang giảm (tình hình đang cải thiện)
  • Ba số gần bằng nhau: Load ổn định
# Ví dụ load đang tăng nguy hiểm
load average: 8.45, 6.12, 3.21
# Load 1 phút = 8.45 > load 15 phút = 3.21 → đang tăng nhanh

# Ví dụ load đang giảm load average: 2.15, 3.89, 4.65 # Load 1 phút = 2.15 < load 15 phút = 4.65 → đang cải thiện

Điểm đặc biệt của load average trên Linux

Linux tính load average khác với hệ điều hành khác. Ngoài tiến trình đang chạy và chờ CPU, Linux còn tính cả tiến trình ở trạng thái TASK_UNINTERRUPTIBLE (đang đợi disk I/O).

Điều này có nghĩa gì? Load cao không phải lúc nào cũng do CPU quá tải.

Ví dụ thực tế

VPS 2 cores có load = 4.0 nhưng khi check top:

top
%Cpu(s):  5.2 us,  2.1 sy,  0.0 ni, 12.7 id, 80.0 wa,  0.0 hi,  0.0 si,  0.0 st

Chú ý cột %wa = 80.0 (I/O wait). Đây không phải CPU quá tải mà là disk I/O chậm. CPU thực ra đang idle 12.7% nhưng load vẫn cao vì có nhiều tiến trình đang chờ disk.

Trường hợp này thường xảy ra khi:

  • Disk SSD bị degraded hoặc đầy
  • Database query chậm, đọc/ghi file lớn
  • Backup đang chạy
  • RAID đang rebuild

⚠️ Lưu ý: Load cao có thể do CPU overload, I/O bottleneck, hoặc cả hai. Phải phân biệt để xử lý đúng cách.

Chẩn đoán 3 loại tắc nghẽn

Detective choosing between CPU, RAM, I/O investigation doors

Load cao có thể do 3 nguyên nhân chính. Dùng vmstat để phân biệt:

# Xem thống kê hệ thống trong 5 giây
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 187264  85532 890140    0    0     8    12   45   78  2  1 97  0  0
 1  0      0 187156  85532 890144    0    0     0     0   32   52  1  0 99  0  0
 1  1      0 186944  85532 890148    0    0     0    16   35   58  1  1 98  0  0
 3  0      0 186832  85532 890152    0    0     0     0   41   71  3  1 96  0  0
 2  0      0 186720  85532 890156    0    0     0     0   38   64  2  1 97  0  0

Các cột quan trọng:

  • r: Số tiến trình runnable (đang chờ CPU)
  • b: Số tiến trình blocked (đang chờ I/O)
  • swpd: Swap memory đã dùng
  • us: % CPU user space
  • sy: % CPU system/kernel
  • id: % CPU idle
  • wa: % CPU đang chờ I/O
  • st: % CPU bị steal (VPS)

1. CPU-bound load

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 6  0      0 512000  85532 890140    0    0     2     8   85  156 78 15  7  0  0
 5  1      0 511800  85532 890144    0    0     0     4   92  189 82 12  6  0  0

Dấu hiệu:

  • r cao (6, 5): Nhiều tiến trình chờ CPU
  • us + sy cao (78+15=93%, 82+12=94%): CPU đang làm việc cực khổ
  • id thấp (7%, 6%): CPU gần như không có thời gian nghỉ
  • wa thấp (0%): Không có vấn đề I/O

Giải pháp: Tối ưu ứng dụng, database queries, hoặc điều chỉnh cấu hình.

2. RAM-bound load

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  2 125000   8000  12000  45000   15   28    45    67  156  298 25 18 42 15  0
 2  3 128000   6000  11500  43000   22   35    38    89  189  341 18 22 38 22  0

Dấu hiệu:

  • swpd cao (125000, 128000): Đang dùng swap nhiều
  • si, so > 0: Swap in/out đang hoạt động
  • free thấp (8000, 6000): RAM sắp hết
  • wa tăng (15%, 22%): Đang đợi swap I/O

ℹ️ Giải pháp: Xem VPS hết RAM để xử lý memory leak.

3. I/O-bound load

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  8      0 512000  85532 890140    0    0   234  1456   89  167  8  5 12 75  0
 2  6      0 511900  85532 890144    0    0   189  1289   76  145  5  3 15 77  0

Dấu hiệu:

  • b cao (8, 6): Nhiều tiến trình chờ I/O
  • wa cao (75%, 77%): CPU đang chờ disk
  • bi, bo cao: Disk đang đọc/ghi nhiều
  • id thấp nhưng us+sy thấp: CPU nhàn nhưng không thể làm gì vì chờ disk

ℹ️ Giải pháp: Xem Disk I/O cao để tối ưu storage.

Quy trình xử lý nhanh

Flowchart showing diagnostic process steps

Khi VPS lag, làm theo 4 bước này:

Bước 1: Kiểm tra load có thực sự cao không?

# Xem load hiện tại
uptime

# Xem số CPU cores nproc

# Kết luận: Load 8.15 trên 4 cores = 200% capacity = quá tải

Output mẫu:

 15:23:45 up 7 days,  3:42,  2 users,  load average: 8.15, 6.89, 4.65
4

Bước 2: Xem tổng quan CPU

# Chạy top và nhấn phím 1 để xem từng CPU core
top
# Nhấn 1 để toggle per-CPU view
%Cpu0  : 12.5 us,  6.2 sy,  0.0 ni, 81.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  : 95.8 us,  4.2 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  : 15.2 us,  3.1 sy,  0.0 ni, 81.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st  
%Cpu3  : 18.9 us,  2.8 sy,  0.0 ni, 78.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

Chú ý:

  • %wa: Nếu cao (>20%) = I/O problem
  • %st: Nếu cao (>10%) = VPS bị steal CPU (oversold)
  • %id: Nếu thấp (<20%) = CPU problem

Bước 3: Phân loại bằng vmstat

vmstat 1 5

Dựa vào output vmstat ở trên để xác định CPU-bound, RAM-bound hay I/O-bound.

Bước 4: Đi sâu vào từng loại

  • CPU-bound: Dùng htop tìm tiến trình CPU cao, kill hoặc nice xuống
  • RAM-bound: Dùng free -hps aux --sort=-%mem tìm memory leak
  • I/O-bound: Dùng iotop tìm tiến trình disk I/O cao

Một số tools hữu ích khác

# Xem load realtime
watch -n 1 uptime

# Xem tiến trình theo CPU usage htop

# Xem disk I/O theo tiến trình (cần install) sudo iotop

# Xem network connections ss -tuln

# Xem log lỗi hệ thống sudo journalctl -f

Giám sát và cảnh báo

Thay vì chờ VPS lag mới xử lý, nên setup giám sát tự động:

  • Netdata: Giám sát realtime, web interface đẹp
  • Zabbix: Giám sát enterprise, phức tạp nhưng mạnh
  • Simple cron script: Check load mỗi 5 phút, send email cảnh báo

💡 Mẹo: Setup monitoring để phát hiện vấn đề sớm thay vì đợi VPS lag mới xử lý.

ℹ️ Xem thêm Giám sát VPS cho hướng dẫn chi tiết.

VPS AZDIGI và tối ưu hiệu năng

Tại AZDIGI, chúng tôi optimized infrastructure để giảm thiểu load cao:

  • SSD NVMe: Giảm I/O wait time
  • CPU dedicated: Không oversell, %st luôn = 0
  • RAM ECC: Ít lỗi memory corruption
  • Network 1Gbps: Ít bottleneck network I/O

Nếu VPS của bạn thường xuyên load cao dù đã tối ưu, có thể do:

  • Undersized cho workload hiện tại
  • Application không được tối ưu
  • Database query chậm

Đăng ký VPS AZDIGI để trải nghiệm performance ổn định, hoặc liên hệ support để được tư vấn sizing phù hợp.

Load average 1.0 trên single-core VPS có nghĩa là gì?

Load 1.0 trên 1-core VPS nghĩa là CPU đang chạy ở 100% capacity. Khác với CPU usage 100%, điều này hoàn toàn bình thường nếu chỉ diễn ra trong thời gian ngắn. Nếu load 1.0 kéo dài nhiều giờ thì cần kiểm tra tiến trình nào đang ăn CPU.

Tại sao load cao nhưng CPU usage lại thấp?

Đây là trường hợp I/O-bound. Linux tính load average bao gồm cả tiến trình đang chờ disk I/O. CPU có thể idle nhưng load vẫn cao vì nhiều tiến trình đang chờ đọc/ghi file hoặc database query. Check %wa trong `top` để xác nhận.

Load average bao nhiêu thì cần lo lắng?

Phụ thuộc số CPU cores. Quy tắc 70%: trên VPS 4 cores, load > 2.8 cần theo dõi. Load > 4.0 cần xử lý. Load > 20.0 là khẩn cấp. Quan trọng hơn là xu hướng: load đang tăng nhanh hay giảm?

Có nên restart VPS khi load quá cao?

Restart là giải pháp cuối cùng. Trước tiên hãy SSH vào (dù chậm) và kill tiến trình có vấn đề. Nếu SSH không được thì dùng console từ control panel. Restart mà không tìm nguyên nhân thì vấn đề sẽ lặp lại.

Xem thêm: Tổng hợp lỗi hiệu năng VPS cho troubleshooting toàn diện.

Chia sẻ:
Bài viết đã được kiểm duyệt bởi AZDIGI Team

Về tác giả

Trần Thắng

Trần Thắng

Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.

Hơn 10 năm phục vụ 80.000+ khách hàng

Bắt đầu dự án web của bạn với AZDIGI