NỘI DUNG BÀI HỌC

✅ Remote / Distributed Testing là gì?
✅ Cách cấu hình JMeter để chạy test trên nhiều máy
✅ Run test từ máy Master tới các máy Slave
✅ Cách thu thập và phân tích kết quả test phân tán
✅ Cách xử lý các lỗi phổ biến khi chạy remote test

🎯 1. Mục tiêu bài học

Sau khi học xong, bạn sẽ biết:

  • Remote / Distributed Testing là gì.

  • Cách cấu hình JMeter để chạy test trên nhiều máy.

  • Cách chạy test từ máy Master tới các máy Slave.

  • Cách thu thập và phân tích kết quả test phân tán.

  • Cách xử lý các lỗi phổ biến khi chạy remote test.



💡 2. Khái niệm cơ bản

Remote Testing (hay còn gọi là Distributed Testing) trong JMeter là cách chia tải test ra nhiều máy.

  • Master (Client): Máy điều khiển, nơi bạn chạy test.

  • Slaves (Servers): Các máy thực tế chạy test và gửi kết quả về Master.

Mục tiêu: giúp JMeter có thể mô phỏng nhiều người dùng đồng thời hơn so với việc chỉ chạy trên 1 máy.



⚙️ 3. Mô hình hoạt động

 
  • Giao tiếp giữa Master và Slave dùng RMI (Remote Method Invocation).

  • Mặc định dùng port 1099 để kết nối.

  • Có thể chạy nhiều Slave cùng lúc để tăng tải.



🖥️ 4. Yêu cầu trước khi cấu hình

Để chạy được remote test, các máy cần:

  1. Cùng phiên bản JMeter.

  2. Cùng phiên bản Java (nên dùng Java 11 hoặc 17).

  3. Kết nối cùng mạng LAN hoặc VPN.

  4. Mở các port cần thiết: 1099 và 4000 (hoặc theo cấu hình RMI).

  5. Tắt Firewall hoặc cho phép RMI port.



🔧 5. Cấu hình chi tiết

🧩 Trên mỗi máy Slave

  1. Mở file:

     
    jmeter/bin/jmeter.properties
  2. Tìm và chỉnh các dòng sau:

     
    server_port=1099
    server.rmi.localport=4000
    server.rmi.ssl.disable=true
  3. Khởi động JMeter Server:

    • Windows:

       
      jmeter-server.bat
    • Linux/Mac:

       
      ./jmeter-server
  4. Nếu thấy dòng log sau là OK:

     
    Created remote object: UnicastServerRef JMeter server started

🧩 Trên máy Master

  1. Mở file:

     
    jmeter/bin/jmeter.properties
  2. Tìm dòng:

    server.rmi.ssl.disable=true
    remote_hosts=192.168.1.11,192.168.1.12

    (Đây là IP của các Slave, cách nhau bằng dấu phẩy)

  3. Kiểm tra kết nối:

     
    ping 192.168.1.11 ping 192.168.1.12
  4. Chạy test (non-GUI mode khuyến khích dùng):

     
    jmeter -n -t TestPlan.jmx -R 192.168.1.11,192.168.1.12 -l result.jtl -e -o html_report

    hoặc nếu bạn đã khai báo remote_hosts trong file properties:

     
    jmeter -n -t TestPlan.jmx -r


🧪 6. Thực hành từng bước

Chuẩn bị:

  • Master: 192.168.1.10

  • Slave1: 192.168.1.11

  • Slave2: 192.168.1.12

  • Cài đặt JMeter và Java trên tất cả các máy.

Bước 1: Cấu hình Slave

Mở file jmeter.properties trên mỗi Slave và chỉnh:

server_port=1099
server.rmi.localport=4000
server.rmi.ssl.disable=true

Sau đó chạy:

 
./jmeter-server

Bước 2: Cấu hình Master

Trong jmeter.properties:

 
remote_hosts=192.168.1.11,192.168.1.12

Bước 3: Tạo file test (LoginTest.jmx)

  • Thread Group: 100 threads

  • HTTP Request: Gửi request đến https://example.com

  • Listener: Simple Data Writer (ghi ra result.jtl)

Bước 4: Chạy test

 
jmeter -n -t LoginTest.jmx -R 192.168.1.11,192.168.1.12 -l result.jtl -e -o report

Bước 5: Xem kết quả

  • Mở thư mục report/index.html

  • Xem các chỉ số:

    • Throughput: số request/giây

    • Response Time: thời gian phản hồi trung bình

    • Error %: tỉ lệ lỗi



⚠️ 7. Các lỗi thường gặp

Lỗi hiển thị Nguyên nhân Cách khắc phục
java.rmi.ConnectException: Connection refused Port RMI bị chặn hoặc IP sai Mở port 1099 và 4000, kiểm tra firewall
Server not found Chưa khởi động jmeter-server trên slave Chạy lại jmeter-server
ClassNotFoundException Version hoặc plugin khác nhau Cài cùng version JMeter, copy thư mục lib giống nhau
Kết quả sai lệch Máy có timezone khác nhau Đồng bộ thời gian các máy
Kết quả không tổng hợp Slave bị ngắt kết nối khi test Kiểm tra log trên Slave


📋 8. Mẹo hữu ích

  • Dùng -G để truyền tham số chung cho tất cả Slave:

     
    jmeter -n -t test.jmx -R 192.168.1.11,192.168.1.12 -Gusers=200

    Trong JMeter, gọi ${__P(users)} để lấy giá trị.

  • Không nên mở Listeners nặng (View Results Tree, Graph Results) khi test phân tán.

  • Dùng non-GUI mode để tiết kiệm tài nguyên:

     
    jmeter -n -t TestPlan.jmx -r
  • Nên chạy test nhỏ trước (smoke test) để kiểm tra kết nối trước khi chạy test lớn.



📈 9. Kiểm tra kết quả

  • File kết quả: .jtl

  • Báo cáo HTML: report/index.html

  • Xem các thông số:

    • Throughput – tốc độ xử lý yêu cầu

    • Average / Median / 90% Line – thời gian phản hồi

    • Error Rate – phần trăm lỗi



🧭 10. Bài tập thực hành

Yêu cầu:

  1. Tạo test plan gọi https://httpbin.org/get.

  2. Chạy test qua 2 máy Slave.

  3. Mỗi máy chạy 500 threads trong 1 phút.

  4. Tổng hợp kết quả trên Master.

  5. So sánh kết quả khi:

    • Chạy trên 1 máy

    • Chạy phân tán trên 2 máy

  6. Ghi nhận xét: throughput và response time khác nhau thế nào?



📚 11. Tài liệu tham khảo



✅ Tóm tắt nhanh

Thành phần Vai trò
Master Gửi test plan, thu kết quả
Slave Chạy tải thực tế
Port mặc định 1099 (RMI), 4000 (Local RMI)
Chạy test jmeter -n -t test.jmx -R ip1,ip2 -l result.jtl -e -o report
Nên dùng Non-GUI mode
Cần đồng bộ JMeter version, Java version, plugin

Teacher

Teacher

NGUYỄN TRÍ DIỆN

Fullstack QA

With over 4 years of experience in software testing — including manual, automation, and performance testing — I have built a strong foundation in delivering high-quality software.

I specialize in the E-commerce and Banking domains, with deep understanding of business flows, performance requirements, and testing standards.

Strong in critical thinking and problem-solving, I proactively identify issues and drive effective solutions.

With an engineering mindset, I continuously update my skills and contribute across functions to help teams achieve their goals.


Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học