1. Vì sao một máy JMeter là không đủ
Một tiến trình JMeter chạy trên một máy có giới hạn: JVM chỉ cấp phát được bấy nhiêu heap, một CPU chỉ tạo được vài nghìn thread trước khi context-switch làm chậm chính máy tạo tải. Với ngân hàng cần mô phỏng hàng chục nghìn giao dịch đồng thời trong ngày lương, một máy sẽ bão hòa ở phía client trước cả server đích — bạn đo giới hạn của JMeter chứ không phải của hệ thống. Đây là lúc cần distributed testing (kiểm thử phân tán): một máy master điều phối nhiều máy slave cùng sinh tải.
Trước khi phân tán, luôn tối ưu trên một máy đã: mô hình tải hợp lý, tắt Listener nặng, tăng heap, tối ưu Assertion. Chỉ khi một máy đã cạn CPU/băng thông mà chưa đủ tải mới scale ngang. Phân tán không phải viên đạn bạc — nó thêm độ phức tạp về mạng (RMI), đồng bộ dữ liệu và thu thập kết quả. Bài này đi sâu: kiến trúc master-slave, correlation cho token động, JSR223/Groovy, tuning JVM, tránh bẫy GUI, sinh HTML dashboard, và tích hợp CI.
2. Kiến trúc master-slave (remote testing)
Trong distributed testing, máy master (còn gọi client/controller) giữ file .jmx và điều khiển; các máy slave (còn gọi server/remote host) chạy tiến trình jmeter-server và thực sự sinh tải tới hệ thống đích. Master không tự sinh tải mà phát kịch bản qua RMI (Remote Method Invocation) tới từng slave, ra lệnh bắt đầu đồng thời, rồi gom kết quả về. Điểm mấu chốt: số thread khai trong Thread Group được nhân lên theo số slave. 1000 thread × 3 slave = 3000 user ảo đồng thời.
# Trên MỖI slave: khởi động jmeter-server (mở RMI port 1099/1098)
# Chỉ định IP để master gọi lại đúng interface
jmeter-server -Djava.rmi.server.hostname=10.0.1.21
# Trên master: chạy non-GUI, chỉ định các slave qua -R
jmeter -n -t payday-load.jmx -l results.jtl -e -o report/ \
-R 10.0.1.21,10.0.1.22,10.0.1.23
# Hoặc liệt kê remote_hosts trong jmeter.properties rồi dùng -r
jmeter -n -t payday-load.jmx -l results.jtl -r3. Correlation: bắt token động
Ứng dụng ngân hàng thật không bao giờ cho hard-code token. Sau khi đăng nhập, server trả về một token phiên (JWT, CSRF token, hoặc session id) mà mọi request sau phải kèm theo. Nếu bạn ghi cứng token đã copy tay, nó hết hạn sau vài phút và toàn bộ request trả 401. Correlation là kỹ thuật trích xuất giá trị động từ phản hồi rồi đưa vào request tiếp theo qua biến JMeter. Hai công cụ chính: JSON Extractor (theo JSONPath cho API JSON) và Regular Expression Extractor (cho HTML/text).
💬 Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!