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

Xây dựng hệ thống Distributed Load Testing với Locust trên 3 VPS giá rẻ

25 tháng 5, 2026

Giới thiệu về Distributed Load Testing và Locust

Trong kỷ nguyên số, việc đảm bảo hệ thống ứng dụng hoạt động ổn định dưới áp lực truy cập lớn không còn là tùy chọn, mà là yếu tố sinh tồn của doanh nghiệp. Kiểm thử hiệu năng (Performance Testing), đặc biệt là Kiểm thử tải phân tán (Distributed Load Testing), chính là chìa khóa để phát hiện sớm các điểm nghẽn (bottlenecks) trước khi hệ thống đối mặt với người dùng thực tế.

Tuy nhiên, thách thức lớn nhất của các doanh nghiệp, đặc biệt là startups và các đội ngũ kỹ thuật vừa và nhỏ, là chi phí hạ tầng cho việc kiểm thử. Các dịch vụ Cloud SaaS thường rất đắt đỏ khi cần giả lập hàng trăm nghìn user. Đó là lý do phương án tự xây dựng hệ thống với Locust trên các dòng VPS giá rẻ trở thành một giải pháp tối ưu, cân bằng hoàn hảo giữa chi phí và hiệu năng.

Tại sao lại chọn Locust?

So với các công cụ truyền thống như Apache JMeter, Locust nổi bật nhờ những ưu điểm vượt trội:

  • Định nghĩa kịch bản bằng Code (As-Code): Kịch bản kiểm thử được viết hoàn toàn bằng Python, giúp dễ dàng tích hợp vào quy trình CI/CD và quản lý phiên bản qua Git.
  • Kiến trúc hướng sự kiện (Event-driven): Sử dụng thư viện gevent, Locust có thể xử lý hàng nghìn người dùng đồng thời trên một tiến trình duy nhất mà không tốn nhiều tài nguyên RAM như cơ chế Multi-threading của JMeter.
  • Hỗ trợ phân tán mạnh mẽ: Cơ chế Master-Worker của Locust cực kỳ tường minh và dễ cấu hình, phù hợp hoàn hảo cho mô hình đa máy chủ (Multi-node).
---

Mô hình kiến trúc hệ thống 3 VPS

Để tối ưu hóa chi phí, chúng ta sẽ sử dụng 3 VPS cấu hình cơ bản (ví dụ: 2 vCPU, 2GB RAM hoặc thậm chí 1 vCPU, 2GB RAM từ các nhà cung cấp giá rẻ như DigitalOcean, Linode, Vultr hoặc các nhà cung cấp nội địa). Kiến trúc hệ thống được phân bổ như sau:

  1. 1 Node Master (VPS 1): Chịu trách nhiệm khởi chạy giao diện Web UI, thu thập số liệu thống kê từ các node Worker, điều phối kịch bản test và không trực tiếp sinh tải (hoặc sinh tải rất ít).
  2. 2 Node Worker (VPS 2 & VPS 3): Chịu trách nhiệm trực tiếp trong việc giả lập các truy cập (Virtual Users) gửi đến hệ thống mục tiêu (Target System) theo sự điều phối của Master.
Lưu ý quan trọng: Tất cả các VPS này cần phải được thông suốt kết nối với nhau qua mạng (giao tiếp qua cổng 5557 và 5558) và có thể truy cập được hệ thống mục tiêu.
---

Hướng dẫn triển khai chi tiết

Bước 1: Chuẩn bị môi trường trên cả 3 VPS

Trước tiên, chúng ta cần cài đặt Python và các thư viện cần thiết trên cả 3 máy chủ. Hãy thực thi các lệnh sau với quyền root hoặc sudo:

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

Tiếp theo, tạo một môi trường ảo Python để đảm bảo tính cô lập và cài đặt Locust:

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

Để kiểm tra cài đặt thành công, hãy chạy lệnh: locust --version.

Bước 2: Viết kịch bản kiểm thử (locustfile.py)

Chúng ta cần chuẩn bị một kịch bản test mẫu bằng Python. File này phải được lưu trữ trên cả 3 VPS tại cùng một đường dẫn cấu trúc để đảm bảo tính đồng bộ.

from locust import HttpUser, task, between

class WebsiteUser(HttpUser):
    wait_time = between(1, 5) # Người dùng đợi từ 1 đến 5 giây giữa các request

    @task(3)
    def view_homepage(self):
        self.client.get("/")

    @task(1)
    def view_product(self):
        self.client.get("/products/123")

Trong kịch bản trên, chúng ta giả lập hành vi người dùng truy cập trang chủ với trọng số cao hơn (tỷ lệ 3:1) so với xem trang sản phẩm cụ thể.

Bước 3: Khởi cấu hình Node Master

Trên VPS 1 (Master), chúng ta khởi chạy Locust với cờ --master để kích hoạt chế độ điều phối. Sử dụng lệnh sau:

locust -f locustfile.py --master

Giao diện Web UI của Locust lúc này sẽ mở ở cổng 8089. Bạn có thể truy cập qua trình duyệt: http://[IP_VPS_MASTER]:8089. Lúc này, số lượng Worker kết nối hiển thị sẽ là 0.

Bước 4: Kết nối các Node Worker

Trên VPS 2 và VPS 3 (Workers), chúng ta khởi chạy lệnh kết nối tới Master bằng cách chỉ định IP của Node Master:

locust -f locustfile.py --worker --master-host=[IP_VPS_MASTER]

Ngay sau khi lệnh được thực thi, quay lại giao diện Web UI trên VPS Master, bạn sẽ thấy chỉ số Workers tăng lên thành 2. Hệ thống đã sẵn sàng kích hoạt lệnh tổng tấn công kiểm thử.

---

Kinh nghiệm cấu hình tối ưu trên VPS giá rẻ

Do sử dụng các VPS cấu hình thấp, việc cấu hình mặc định của hệ điều hành Linux có thể trở thành rào cản khiến hệ thống không thể sinh tải lớn (bị giới hạn kết nối). Dưới đây là các bước tối ưu hóa hệ thống bắt buộc:

1. Tăng giới hạn File Descriptors (Tối hạn số lượng Socket mở đồng thời)

Mặc dù cấu hình phần cứng có thể đáp ứng, nhưng mặc định Linux giới hạn mỗi process chỉ mở tối đa 1024 tệp (hoặc kết nối mạng). Hãy tăng giới hạn này trên các node Worker:

sudo nano /etc/security/limits.conf

Thêm các dòng sau vào cuối file:

* soft nofile 65535
* hard nofile 65535

Sau đó, áp dụng thay đổi bằng lệnh: ulimit -n 65535.

2. Tối ưu hóa dải cổng mạng (Ephemeral Ports) và thời gian tái sử dụng

Khi sinh tải lớn, các kết nối TCP đóng/mở liên tục dễ dẫn đến trạng thái TIME_WAIT, làm cạn kiệt số lượng cổng mạng khả dụng. Chỉnh sửa file cấu hình hệ thống:

sudo nano /etc/sysctl.conf

Thêm các tham số tối ưu sau:

net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1

Chạy lệnh sudo sysctl -p để các cấu hình này có hiệu lực ngay lập tức.

---

Đánh giá kết quả và kết luận

Với mô hình phân tán gồm 1 Master và 2 Workers chạy trên hạ tầng 3 VPS giá rẻ, doanh nghiệp hoàn toàn có thể giả lập từ 20,000 đến 50,000 người dùng đồng thời (Concurrent Users) tùy thuộc vào độ phức tạp của kịch bản test mà không gặp phải hiện tượng nghẽn tài nguyên tại các máy đóng vai trò sinh tải.

Giải pháp này không chỉ tiết kiệm hàng nghìn USD chi phí dịch vụ kiểm thử bên thứ ba mà còn giúp đội ngũ kỹ sư làm chủ hoàn toàn dữ liệu, kịch bản linh hoạt và chủ động tích hợp trực tiếp vào luồng vận hành tự động của doanh nghiệp. Hãy bắt đầu xây dựng hệ thống kiểm thử của riêng bạn ngay hôm nay để đảm bảo sự ổn định tuyệt đối cho sản phẩm số của mình.

Xây dựng hệ thống Distributed Load Testing với Locust trên 3 VPS giá rẻ | DPTCloud