Đừng đợi đến lúc server sập mới cuống cuồng tìm lỗi
Bạn đã từng gặp cảnh server chạy cực mượt khi test nội bộ, nhưng cứ hễ đến giờ cao điểm, chỉ cần traffic tăng khoảng 20-30% là dịch vụ bắt đầu chậm chạp, thậm chí trả về lỗi 504 liên tục? Mình từng nếm trái đắng khi tiếp nhận một cụm server cũ chạy CentOS 7.
Thông số CPU và RAM nhìn qua rất đẹp, nhưng chỉ sau một tuần vận hành, hệ thống lăn đùng ra chết. Hóa ra, lỗi rò rỉ bộ nhớ (memory leak) tiềm ẩn chỉ phát tác khi server bị đẩy lên ngưỡng 80% tải – điều mà mình đã bỏ qua khi chỉ kiểm tra ở trạng thái idle.
Kể từ đó, nguyên tắc sắt đá của mình là: Trước khi đưa bất kỳ dịch vụ nào lên production, phải dùng stress-ng để “hành hạ” phần cứng. Công cụ này giúp chúng ta giả lập các kịch bản tải khắc nghiệt nhất. Từ đó, bạn sẽ biết chính xác đâu là điểm nghẽn (bottleneck) của hệ thống, dù đó là do CPU quá nhiệt, RAM lỗi hay tốc độ I/O ổ đĩa không đạt kỳ vọng.
Tại sao stress-ng lại là lựa chọn số một?
Nếu lệnh stress truyền thống chỉ ở mức cơ bản, thì stress-ng chính là một con quái vật thực sự. Đây là dự án mã nguồn mở mạnh mẽ, thiết kế riêng để đẩy các phân vùng hệ thống (subsystems) của Linux đến giới hạn cuối cùng. Với hơn 200 bài kiểm tra (stressors) khác nhau, nó cho phép bạn can thiệp sâu vào mọi ngóc ngách: từ tính toán số thực, bộ nhớ ảo cho đến các thao tác xử lý tín hiệu (signals) của nhân Linux.
Điểm khác biệt nằm ở chỗ stress-ng không chỉ làm nóng CPU một cách vô tri. Nó có thể kiểm tra các tập lệnh đặc biệt hoặc các kiểu cấp phát bộ nhớ phức tạp. Đây là những thứ mà các công cụ thông thường thường bỏ sót.
Cài đặt nhanh trong 30 giây
Hầu hết các bản phân phối Linux hiện đại đều tích hợp sẵn stress-ng trong kho ứng dụng chính thức.
Với Ubuntu hoặc Debian:
sudo apt update && sudo apt install stress-ng -y
Với AlmaLinux, Fedora hoặc CentOS:
sudo dnf install stress-ng -y
Các kịch bản Stress Test thực tế
1. Ép tải CPU (Stress Test nhiệt độ và xung nhịp)
Bài test này giúp bạn xác định hệ thống tản nhiệt có ổn định hay không. Nếu CPU bị hạ xung (thermal throttling) khi chạy 100%, server của bạn sẽ chậm đi trông thấy dù thông số vẫn báo đủ.
stress-ng --cpu 4 --timeout 60s --metrics-brief
--cpu 4: Chạy đồng thời 4 worker (thường nên đặt bằng đúng số nhân CPU).--timeout 60s: Tự động dừng sau 1 phút để tránh treo máy hoàn toàn.--metrics-brief: Xuất báo cáo hiệu năng ngắn gọn sau khi kết thúc.
Muốn nặng đô hơn? Hãy thử thuật toán ma trận để ép CPU tính toán liên tục:
stress-ng --cpu 2 --cpu-method matrix --timeout 30s
2. Kiểm tra giới hạn chịu đựng của RAM
Lỗi bộ nhớ là nguyên nhân hàng đầu gây crash hệ thống. stress-ng sẽ liên tục chiếm dụng và giải phóng RAM để phát hiện các ô nhớ lỗi hoặc vấn đề về Swap.
stress-ng --vm 2 --vm-bytes 1G --timeout 60s
Lệnh trên kích hoạt 2 worker, mỗi worker ngốn 1GB RAM. Lưu ý: Tổng dung lượng test không nên vượt quá 90% RAM thực tế, trừ khi bạn muốn thử thách lòng kiên nhẫn của OOM Killer trên Linux.
3. Kiểm tra tốc độ đọc/ghi ổ đĩa (I/O)
Trên các VPS giá rẻ, tài nguyên I/O thường bị chia sẻ dẫn đến tình trạng nghẽn cổ chai. Hãy kiểm tra xem ổ cứng của bạn có thực sự nhanh như quảng cáo không.
stress-ng --io 4 --io-ops 1000 --timeout 60s
Để đo tốc độ thực tế mà không thông qua bộ nhớ đệm (cache) của hệ điều hành, hãy dùng thêm option direct:
stress-ng --hdd 1 --hdd-opts direct,sync --timeout 60s
Kinh nghiệm thực chiến: Kịch bản tổng lực
Trong thực tế, server không bao giờ chỉ bị quá tải một thành phần duy nhất. Một ứng dụng web khi đông khách sẽ ngốn đồng thời cả CPU để xử lý logic, RAM để chứa cache và Disk để ghi log. Mình thường dùng lệnh sau để kiểm tra nhanh một con VPS mới thuê xem nó có “xịn” như cam kết không:
stress-ng --cpu 2 --io 1 --vm 1 --vm-bytes 512M --timeout 5m --metrics
Vừa chạy lệnh này, bạn hãy mở một tab Terminal khác chạy htop. Hãy quan sát Load Average. Nếu Load Average vọt lên cao (ví dụ lên mức 5.0 trên máy 2 core) mà bạn vẫn thao tác SSH mượt mà, thì server đó rất đáng tin cậy.
Cảnh báo quan trọng: Tuyệt đối không chạy stress-ng trên server đang vận hành (Production). Nó sẽ chiếm quyền ưu tiên tài nguyên và khiến khách hàng của bạn không thể truy cập dịch vụ ngay lập tức. Hãy luôn thực hiện trên môi trường Staging.
Tạm kết
stress-ng không đơn thuần là công cụ phá phách, nó là thước đo sự tự tin của người quản trị. Thay vì ngồi cầu nguyện hệ thống không sập, việc chủ động tìm ra giới hạn của server sẽ giúp bạn luôn làm chủ tình hình. Nếu thấy server có dấu hiệu chậm bất thường, hãy dùng stress-ng để cô lập xem vấn đề nằm ở CPU, RAM hay ổ cứng nhé.

