Note: Mình ko hướng dẫn Jmeter basic, để có thể hiểu được bài này bạn cần phải làm việc với jmeter 1 thời gian nhất định.
Thread Group trong Jmeter là cách cấu hình để tạo lượng load mình mong muốn
Các loại Thread Group thường được dùng trong jmeter, nó gồm 2 loại:
- Default simple thread group: có sẵn trong Jmeter
- Những loại còn lại phải cài thông qua Jmeter Plugins
Nội dung bài viết
I. Default – simple thread group
Là loại thread group có sẵn trong Jmeter, nó phục vụ cho các nhu cầu cơ bản của performance test. Ví dụ mình setting như sau:
- Users: 50
- Ramp-up: 90s
- Duration: 120s
Nhìn vào biểu đồ trên, ta có thể thấy được là:
- Cứ 1s sẽ có 50/90 ~ 0.55 user được tạo ra, đảm bảo từ giây thứ 91 trở đi, sẽ giữ 50 users hoạt động đồng thời, cho đến khi kết thúc thời gian test. Đừng quá quan tâm vào điểm start, điểm end của đồ thị khi nó ko show chính xác những gì chúng ta nghĩ.
- Đồ thị của Active Threads trong Simple Thread Group luôn là dạng tăng lên từ từ như vậy. Nó phục vụ cho nhu cầu đơn giản, nếu bạn cần cách tăng Active Thread khác thì xem tiếp bên dưới.
II. Stepping Thread Group
Mục tiêu vẫn là đẩy load nhưng bạn có thể xác định được số threads mỗi lần tăng lên và thời gian để tăng được số threads đó. Đây là 1 bản nâng cấp của simple thread group.
Bạn cứ nhìn màu sắc và các chú thích mình đã viết ở dưới để hiểu các config của nó.
This group will start with .... threads
–> số threads mong muốn đạt được tối đa.First, wait for ... seconds
–> số giây chờ đợi trước khi tạo ra threads đầu tiênNext, add xxx threads every yyy seconds, using ramp-up zzz seconds
–> sau đó sẽ thêm xxx threads vào, kéo dài trong yyy giây, và thời gian để tạo được xxx threads là zzz giây.Then hold load for ... seconds
–> giữ số lượng max threads trong bao nhiêu giâyFinally, stop X threads every Y seconds
–> sẽ giảm số lượng X threads trong mỗi Y giây.
Đây là report sau khi run con fig như trên, bạn sẽ thấy nó ko khác gì lắm so với Simple Thread Group vì chỉ số granularity mình đang set = 10s (các điểm cách nhau 10s)
\bin\user.properties jmeter.reportgenerator.overall_granularity=10000
III. Ultimate Thread Group
Phục vụ cho những nhu cầu đặc biệt như spike test, ví dụ mình có scenarios mô phỏng mua hàng lúc giờ vàng như sau:
- Tổng thời gian run test là 5min (300s)
- 10 users lúc nào cũng active từ đầu đến cuối
- sau 30s đầu tiên, có thêm 30 users mua hàng và ở lại page hết thời điểm giờ vàng
- sau đó 30s, có 100 users phi vào, mua hàng trong chớp mắt và thoát trang khi hết giờ vàng.
Cách config như sau:
Active Thread trong html khá tương đồng với load mà chúng ta mong muốn. Có thể nói dựa vào loại Ultimate Thread Group này chúng ta có thể tạo ra rất nhiều pattern load khác nhau, phong phú hơn 2 loại trên rất nhiều, rất xứng đáng với cái tên Ultimate. 🙂
IV. Concurrency Thread Group
Nó tương đối giống với Stepping Thread Group, setting hơi khác 1 chút thôi.
- Target: số CCU mình mong muốn đạt được
- Ramp-up time: thời gian để đạt được số CCU target
- Ramp-up step: trong thời gian ramp-up time thì mỗi lần tăng lên bn CCU
- Hold target Rate time: giữ số lượng CCU trong vòng bao lâu
V. Arrivals Thread Group
(update sau)
VI. Free-form Arrivals Thread Group
(update sau)
Là sao chưa hiểu ạ
Hi bạn, bài của mình ko phải bài cơ bản, nếu bạn biết Thread Group là gì rồi thì mới đọc hiểu được.
Bài viết của anh rất dễ hiểu, thanks anh.
Cảm ơn bạn, may mà bạn ko giống bạn comment trước. :))))
Hi a. Giang
Em cũng mới tìm hiểu về performance test với Jmeter. em có 2 thắc mắc:
Mong a giải đáp giúp em, cảm ơn a rất nhiều ạ.
1. Cái đó tùy em, kịch bản phải đi theo nhu cầu và hành vi của end-user, chứ không phải dựa vào suy nghĩ của 1 người ngoài như anh.
Cá nhân anh thấy end-user muốn login càng ít càng tốt, nên xu hướng là login 1 lần, GET 100 lần. Em tự lựa chọn kịch bản thôi.
2. Việc share thông tin qua 2 Thread Group sẽ được thông qua properties, em có thể login rồi đẩy thông tin cookie vào properties. Ở Thread Group còn lại em có thể get cái cookie đó và đẩy vào header. Cách sử dụng properties anh có viết 1 bài ở đây. https://giangtester.com/cach-set-property-va-su-dung-property-trong-jmeter/
em có sử dụng Ultimate Thread Group , cấu hình cho Start thread count : 10, theo em nghĩ là 10 samples , nhưng khi chạy nó ghi lên tận 50 samples. Mong a giải đáp giúp em, cảm ơn a rất nhiều ạ.
Hi em, em cần up thêm screenshot thì anh mới biết em setup như thế nào để có thể giải thích đúng.
đây ạ
kết quả lên tận 500 samples ạ. Mong a giải đáp giúp em, cảm ơn a rất nhiều
Anh nghĩ là em hiểu sai ý nghĩa của Thread và Samples.