Khi server bỗng dưng “đứng hình” giữa đêm
2 giờ sáng, điện thoại rung liên hồi. Hệ thống giám sát báo động: Server web phản hồi chậm trên 10 giây. Bạn bật dậy, SSH vào và gõ lệnh top. Thật trớ trêu, mọi thứ lúc này lại có vẻ bình thường, CPU chỉ loanh quanh 5%. Cảm giác ức chế nhất của một SysAdmin là biết hệ thống vừa gặp sự cố nhưng không có bằng chứng nào để truy tìm thủ phạm.
Các lệnh như top hay htop rất hữu ích để xem trạng thái tức thời. Tuy nhiên, chúng hoàn toàn “mù tịt” về những gì đã xảy ra cách đây 30 phút. Muốn soi lại quá khứ, bạn cần một bộ công cụ có khả năng ghi nhật ký hệ thống. Đó là lúc sysstat trở thành cứu cánh.
Sau nhiều năm vận hành các cụm Cluster lớn, mình coi sysstat như chiếc “hộp đen” trên máy bay. Nó âm thầm ghi lại mọi chỉ số sức khỏe của hệ thống. Khi có sự cố, bạn chỉ việc trích xuất dữ liệu để “khám nghiệm tử thi” thay vì ngồi đoán mò.
Tại sao các công cụ mặc định là chưa đủ?
Vấn đề của top hay free -m là chúng chỉ cung cấp dữ liệu real-time. Trong thực tế, các lỗi hiệu suất thường xảy ra chớp nhoáng rồi biến mất.
Hãy tưởng tượng một tiến trình backup chạy ngầm làm nghẽn Disk I/O trong đúng 5 phút. Nếu bạn không trực tiếp gõ lệnh vào đúng khung giờ đó, bạn sẽ bỏ lỡ manh mối. Sysstat giải quyết việc này bằng cách thu thập dữ liệu định kỳ (thường mỗi 10 phút) và lưu trữ vào các file log để bạn truy vấn bất cứ lúc nào.
Cài đặt sysstat trong 30 giây
Hầu hết các bản phân phối Linux đều có sẵn sysstat trong kho ứng dụng. Việc cài đặt cực kỳ đơn giản.
Trên Ubuntu/Debian:
sudo apt update && sudo apt install sysstat -y
sudo systemctl enable --now sysstat
Trên CentOS/RHEL/AlmaLinux:
sudo yum install sysstat -y
sudo systemctl enable --now sysstat
Lưu ý quan trọng: Riêng trên Ubuntu, bạn phải sửa file /etc/default/sysstat. Hãy đổi ENABLED="false" thành ENABLED="true" để kích hoạt trình thu thập dữ liệu sar.
1. mpstat: Soi từng nhân CPU
Nếu top cho cái nhìn tổng thể, thì mpstat (Multiprocessor Statistics) giúp bạn bóc tách hiệu suất của từng nhân CPU. Lệnh này cực kỳ hữu ích để phát hiện tình trạng quá tải cục bộ.
mpstat -P ALL 2 5
Thông số này sẽ cập nhật 2 giây một lần, lặp lại 5 lần. Hãy chú ý:
- %iowait: Nếu con số này > 10%, CPU đang phải ngồi chơi xơi nước để đợi dữ liệu từ ổ cứng. Đây là dấu hiệu nghẽn cổ chai I/O rõ rệt nhất.
- %usr: Tỷ lệ CPU xử lý các ứng dụng của người dùng.
- %idle: Nếu %idle thấp (dưới 5%), server của bạn đang thực sự kiệt sức vì xử lý tính toán.
2. iostat: Tìm điểm nghẽn ổ cứng
Mình từng xử lý một ca server database lag kinh khủng dù CPU chỉ dùng 10%. Khi chạy iostat, sự thật mới phơi bày: Ổ cứng đang bị quá tải ghi (write) do log debug chưa tắt.
iostat -xz 1 10
Hãy tập trung vào hai chỉ số “vàng” sau:
- %util: Nếu con số này chạm ngưỡng 80-100%, ổ cứng của bạn đã chạy hết công suất.
- await: Thời gian trung bình để xử lý một yêu cầu I/O. Với SSD,
awaitnên dưới 5ms. Nếu nó vọt lên 20-50ms, người dùng sẽ bắt đầu cảm thấy độ trễ rõ rệt.
3. vmstat: Toàn cảnh tài nguyên hệ thống
vmstat (Virtual Memory Statistics) là lệnh mình luôn gõ đầu tiên khi tiếp nhận một server lạ. Nó tóm tắt nhanh gọn về process, RAM, swap và CPU.
vmstat 1 5
Dấu hiệu nguy hiểm nằm ở cột si (swap in) và so (swap out). Nếu hai cột này liên tục nhảy số lớn hơn 0, nghĩa là RAM đã cạn. Hệ thống đang phải dùng ổ cứng làm bộ nhớ tạm. Điều này sẽ khiến server chậm như rùa bò vì tốc độ ổ cứng không bao giờ bằng RAM.
4. sar: Cuốn nhật ký vạn năng
Đây là công cụ đáng giá nhất trong bộ sysstat. sar (System Activity Reporter) cho phép bạn quay ngược thời gian để xem chuyện gì đã xảy ra.
Để xem lại tình trạng CPU vào lúc 10 giờ sáng nay:
sar -u -s 10:00:00 -e 10:30:00
Hoặc kiểm tra lưu lượng mạng của ngày hôm kia (giả sử là ngày 19):
sar -n DEV -f /var/log/sysstat/sa19
Các flag quyền năng bạn cần nhớ:
-u: Kiểm tra CPU.-r: Kiểm tra RAM.-n DEV: Soi lưu lượng mạng (Network traffic).-q: Xem Load Average theo lịch sử.
Quy trình 4 bước tìm nguyên nhân gốc rễ
Khi server có dấu hiệu chậm chạp, mình thường thực hiện theo checklist này:
- vmstat 1: Xem tổng thể. Nếu cột
r(runnable) cao, CPU bận. Nếu cộtb(blocked) cao, I/O đang nghẽn. - mpstat -P ALL 1: Kiểm tra xem có nhân CPU nào bị “hành” quá mức bởi ứng dụng đơn luồng không.
- iostat -xz 1: Xác định phân vùng ổ cứng nào đang bị treo và
awaitlà bao nhiêu. - sar: Nếu sự cố đã qua, lật lại lịch sử đúng khung giờ đó để đối chiếu các thông số trên.
Một ví dụ thực tế: Load Average vọt lên 40 trên server 8 core. Dùng iostat thấy %iowait lên đến 50%. Kiểm tra tiếp bằng sar -n DEV thấy traffic mạng bình thường. Cuối cùng phát hiện ra script updatedb của hệ thống đang quét toàn bộ ổ cứng. Mình chỉ cần dời lịch chạy của nó vào 3 giờ sáng là xong.
Lời kết
Sở hữu kỹ năng dùng sysstat sẽ giúp bạn chuyển từ thế bị động sang chủ động. Thay vì thấy chậm là restart, bạn sẽ biết chính xác tại sao nó chậm. Đừng đợi đến lúc server sập mới cài đặt. Hãy kích hoạt ngay hôm nay để sar bắt đầu tích lũy dữ liệu cho bạn.
Nếu bạn thấy thông số nào nhảy lạ lùng, hãy để lại bình luận phía dưới. Mình sẽ cùng bạn giải mã. Chúc anh em tối ưu server thành công!

