Các loại Thread Group có trong Jmeter

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
ảnh tự vẽ

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 tự chụp + vẽ

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ó.

ảnh tự vẽ
  • 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ên
  • Next, 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ây
  • Finally, stop X threads every Y seconds –> sẽ giảm số lượng X threads trong mỗi Y giây.
ảnh tự chụp

Đâ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:

ảnh tự vẽ
  • 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:

ảnh tự chụp + vẽ

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)

4.8 4 votes
Article Rating
Subscribe
Notify of
guest
11 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Minh
Minh
2 years ago

Là sao chưa hiểu ạ

Thanh
Thanh
2 years ago

Bài viết của anh rất dễ hiểu, thanks anh.

Superman
Superman
1 year ago

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:

  1. Ví dụ như e cần test cho API GET thông tin sản phẩm, thì e nên viết kịch bản là Login và GET 100 lần. Hay là e nên làm Login 1 lần và 100 lần cho GET?
  2. Em có thử trường hợp Login 1 lần + 100 GET, nhưng nếu e làm 2 thread group (Thread Group 1 – set User = 1 cho Login, và Thread Group 2 – set User = 100 cho GET), nhưng cookie thì nó lại độc lập giữa 2 Thread Group, Thread Group 2, không có Cookie Login vậy nên không thể GET được. (Em có thử dùng Loop Controller và chỉ 1 Thread Group, nhưng Jmeter nó lại không gửi request liên tục, mà phải đợi response từ vòng loop trước xong thì mới tới loop tiếp theo, nó không đúng với Ram-up e mong muốn)

Mong a giải đáp giúp em, cảm ơn a rất nhiều ạ.

thang
thang
1 month ago

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 ạ.

thang
thang
1 month ago
Reply to  Giang Nguyen

đây ạ

Screenshot-2024-09-24-144041
thang
thang
1 month ago
Reply to  Giang Nguyen

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

Screenshot-2024-09-24-143950