Quay lại danh sách
Tin tức công nghệ

Hướng Dẫn Thiết Lập Hệ Thống Distributed Load Testing Bằng Locust Trên Cụm 3 VPS Giá Rẻ

26 tháng 5, 2026

1. Giới thiệu về Distributed Load Testing và công cụ Locust

Trong kỷ nguyên số, trải nghiệm người dùng phụ thuộc rất lớn vào tốc độ và sự ổn định của hệ thống. Kiểm thử hiệu năng (Load Testing) không còn là một bước tùy chọn mà đã trở thành quy trình bắt buộc trước khi phát hành bất kỳ ứng dụng lớn nào. Tuy nhiên, khi quy mô người dùng giả lập lên đến hàng chục nghìn hoặc hàng trăm nghìn kết nối đồng thời, một máy trạm đơn lẻ không còn đủ khả năng đáp ứng do giới hạn về phần cứng (CPU, RAM, Băng thông mạng). Đó là lúc chúng ta cần đến Distributed Load Testing (Kiểm thử hiệu năng phân tán).

Phương pháp này phân phối tải lượng truy cập từ nhiều máy tính khác nhau (được gọi là các Workers) dưới sự điều khiển của một máy trung tâm (Master). Trong số các công cụ hiện đại, Locust nổi lên như một giải pháp mã nguồn mở tối ưu nhờ những ưu điểm vượt trội:

  • Sử dụng ngôn ngữ Python: Kịch bản kiểm thử được viết hoàn toàn bằng code Python thuần túy, mang lại sự linh hoạt tối đa so với việc cấu hình bằng XML hay giao diện đồ họa phức tạp như JMeter.
  • Cơ chế Event-driven: Nhờ vào thư viện gevent, một Worker của Locust có thể xử lý hàng nghìn người dùng đồng thời (User) mà không gặp phải tình trạng nghẽn cổ chai do xung đột luồng (Thread).
  • Giao diện trực quan và Real-time: Cung cấp dashboard web theo thời gian thực giúp theo dõi các chỉ số RPS (Requests Per Second), Failure Rate, và Response Time Percentiles một cách chính xác.

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách thiết lập một hệ thống Distributed Load Testing hoàn chỉnh bằng Locust trên cụm 3 VPS giá rẻ nhằm tối ưu hóa chi phí tối đa mà vẫn đạt được hiệu suất giả lập cực kỳ ấn tượng.

2. Chuẩn bị mô hình kiến trúc hệ thống 3 VPS

Để xây dựng hệ thống này, chúng ta cần chuẩn bị 3 máy chủ ảo (VPS) cùng nằm trong một dải mạng nội bộ hoặc có thể kết nối Internet thông suốt công khai. Cấu hình khuyến nghị tối thiểu cho mỗi VPS giá rẻ là 1 vCPU và 2GB RAM chạy hệ điều hành Ubuntu Server 22.04 LTS.

Mô hình phân bổ tài nguyên được quy định cụ thể như sau:

  1. VPS 1 (Locust Master): Địa chỉ IP giả định là 192.168.1.10. Máy chủ này đóng vai trò điều phối, thu thập dữ liệu thống kê từ các Worker và hiển thị Giao diện Người dùng (Web UI). Máy Master không trực tiếp sinh tải (generate traffic) để đảm bảo độ chính xác cho số liệu thu thập.
  2. VPS 2 (Locust Worker 01): Địa chỉ IP giả định là 192.168.1.11. Máy chủ này nhận kịch bản từ Master và thực hiện sinh tải giả lập tấn công/truy cập vào mục tiêu kiểm thử.
  3. VPS 3 (Locust Worker 02): Địa chỉ IP giả định là 192.168.1.12. Hoạt động song song với Worker 01 để nhân đôi năng lực kiểm thử.
Lưu ý quan trọng về bảo mật: Máy Master sẽ mở cổng 5557 để giao tiếp với các Worker và cổng 8089 cho giao diện Web UI. Hãy đảm bảo rằng hệ thống tường lửa (UFW) trên VPS đã được cấu hình mở các cổng này cho các IP nội bộ tương ứng.

3. Cấu hình môi trường và cài đặt Locust trên cụm VPS

Bước 1: Cập nhật hệ thống và cài đặt Python

Thực hiện lệnh sau trên cả 3 VPS để đảm bảo môi trường Python được đồng bộ nhất quán:

sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-venv -y

Bước 2: Khởi tạo môi trường ảo và cài đặt Locust

Việc sử dụng môi trường ảo (Virtual Environment) giúp cô lập thư viện và tránh các xung đột hệ thống không đáng có. Hãy chạy chuỗi lệnh sau trên cả 3 máy:

python3 -m venv locust_env
source locust_env/bin/activate
pip install --upgrade pip
pip install locust

Kiểm tra phiên bản để xác nhận cài đặt thành công bằng lệnh: locust --version.

4. Xây dựng kịch bản kiểm thử (locustfile.py)

Chúng ta cần tạo một file kịch bản kiểm thử có tên là locustfile.py. File này bắt buộc phải giống nhau hoàn toàn trên cả 3 máy VPS. Dưới đây là một kịch bản mẫu tiêu chuẩn để kiểm thử hiệu năng một hệ thống E-commerce bằng cách mô phỏng hành vi xem trang chủ và tìm kiếm sản phẩm:

from locust import HttpUser, task, between

class AwesomeWebsiteUser(HttpUser):
    # Thời gian chờ ngẫu nhiên giữa các tác vụ từ 1 đến 3 giây
    wait_time = between(1, 3)
    
    @task(3)
    def view_homepage(self):
        """Mô phỏng người dùng truy cập trang chủ"""
        self.client.get("/")
        
    @task(1)
    def search_products(self):
        """Mô phỏng hành vi tìm kiếm sản phẩm"""
        self.client.get("/search?q=laptop")

Trong đoạn mã trên, decorator @task định nghĩa hành vi của người dùng ảo. Trọng số (weight) truyền vào (ví dụ: 3 và 1) thể hiện tỷ lệ phân phối hành vi: người dùng sẽ có xu hướng xem trang chủ nhiều gấp 3 lần hành vi tìm kiếm sản phẩm.

5. Khởi chạy hệ thống Distributed Load Testing

Khởi chạy Locust Master

Trên máy VPS 1 (Master), thực hiện lệnh khởi chạy chế độ Master độc quyền, không tham gia sinh tải:

locust -f locustfile.py --master

Giao diện dòng lệnh sẽ thông báo Master đang lắng nghe tại cổng 5557.

Khởi chạy các Locust Worker

Di chuyển sang VPS 2 (Worker 01) và VPS 3 (Worker 02), thực hiện kích hoạt môi trường ảo và chạy lệnh kết nối về Master:

locust -f locustfile.py --worker --master-host=192.168.1.10

Khi kết nối thành công, màn hình terminal của máy Master sẽ hiển thị thông báo đã nhận diện được 2 Workers sẵn sàng thực thi tác vụ.

6. Điều khiển đợt kiểm thử thông qua Web UI

Bây giờ, bạn mở trình duyệt web trên máy tính cá nhân và truy cập vào địa chỉ: [http://192.168.1.10:8089](http://192.168.1.10:8089). Giao diện quản trị trực quan của Locust sẽ xuất hiện.

Tại đây, bạn cần cấu hình các thông số then chốt:

  • Number of users: Tổng số lượng người dùng ảo muốn giả lập (ví dụ: 5000).
  • Spawn rate: Tốc độ tạo người dùng mới mỗi giây (ví dụ: 50).
  • Host: Địa chỉ URL của hệ thống mục tiêu cần kiểm thử (Target System under test).

Nhấn nút "Start swarming" để bắt đầu. Hệ thống Master sẽ tự động phân bổ đều số lượng 5000 người dùng này xuống cho 2 máy Worker (mỗi máy chịu tải xử lý 2500 users). Bạn sẽ thấy biểu đồ đồ thị RPS tăng trưởng theo thời gian thực và các chỉ số thống kê Response Time đổ về liên tục.

7. Các lưu ý quan trọng để tối ưu hóa hệ thống VPS giá rẻ

Khi sử dụng VPS cấu hình thấp cho việc giả lập tải lớn, bạn cần đặc biệt lưu ý các điểm sau để tránh việc chính hệ thống kiểm thử bị sập trước khi làm sập hệ thống mục tiêu:

  • Tăng giới hạn File Descriptors (Ulimit): Mặc định Linux giới hạn số lượng kết nối mở đồng thời của mỗi tiến trình ở mức khá thấp (thường là 1024). Hãy chạy lệnh ulimit -n 65535 trên tất cả các Worker trước khi chạy Locust nhằm mở rộng băng thông kết nối.
  • Sử dụng chế độ Headless trong Production: Nếu muốn tối ưu hóa tài nguyên phần cứng tối đa, hãy bỏ qua giao diện Web UI và chạy thẳng bằng dòng lệnh (Headless mode) để tiết kiệm dung lượng RAM tiêu thụ trên máy Master.
  • Giám sát tài nguyên phần cứng (Resource Monitoring): Sử dụng công cụ htop hoặc glances trên các VPS Worker trong suốt quá trình test. Nếu chỉ số CPU hoặc Memory tiệm cận mức 100%, kết quả kiểm thử (Response Time) trả về sẽ bị sai lệch đáng kể do độ trễ nội tại của chính máy Worker. Lúc đó, giải pháp duy nhất là mở rộng quy mô bằng cách bổ sung thêm VPS Worker mới vào cụm phân tán.

8. Lời kết

Thiết lập hệ thống Distributed Load Testing bằng Locust trên cụm VPS giá rẻ là một giải pháp cực kỳ thông minh, hiệu quả và tiết kiệm chi phí cho các doanh nghiệp vừa và nhỏ (SMEs) cũng như các đội ngũ phát triển sản phẩm tinh gọn. Nó phá vỡ rào cản về mặt chi phí của các dịch vụ kiểm thử đám mây đắt đỏ, giúp bạn hoàn toàn chủ động trong việc đánh giá và tối ưu năng lực chịu tải của hệ thống. Hãy bắt tay vào xây dựng cụm kiểm thử riêng của mình ngay hôm nay để đảm bảo ứng dụng luôn vận hành mượt mà trước mọi làn sóng truy cập của khách hàng.

Hướng Dẫn Thiết Lập Hệ Thống Distributed Load Testing Bằng Locust Trên Cụm 3 VPS Giá Rẻ | DPTCloud