Top 10 công cụ mã nguồn mở kiểm tra tải website – Phần 1

Nếu bạn có một hệ thống website chạy production cũng mới và đang có nhu cầu kiểm tra xem hệ thống web server phía dưới backend có khả năng chịu tải ra sao ?! Thì hẳn trong đầu bạn đang cố gắng tìm kiếm các công cụ mã nguồn mở có thể giả lập truy cập như người dùng thật đang truy cập vào website nhằm kiểm tra tải website. Và các công cụ này nếu có thể xuất report cho bạn về số lượng truy cập, số lần truy cập thất bại,… thì còn tuyệt hơn nữa.

Chính vì lý do này mà chúng ta sẽ cùng đến với Series về Top 10 công cụ mã nguồn mở kiểm tra tải Website. Series này chỉ giới thiệu sơ lược, tổng quan, link trang chủ mã nguồn và một vài hình ảnh lab của các chương trình đó. Nếu bạn có nhu cầu tìm hiểu chi tiết cách sử dụng thì có thể truy cập trực tiếp trang chủ của chương trình để tìm hiểu nhé. Chúng ta sẽ đến với Phần 1 của Series gồm 5 công cụ:

  • Jmeter
  • Locust
  • Gatling
  • Taurus
  • Siege

1. JMeter

JMeter là công cụ mã nguồn mở rất phổ biến trong việc kiểm thử khả năng chịu tải cho website. Apache Jmeter là một ứng dụng của Java được thiết kế đặc biệt cho khả năng đo hiệu suất.

apache logo

Ưu điểm của Jmeter

  • Có khả năng kiểm thử với một loạt các công nghệ như Java Objects, Web HTTP/HTTPS, SOAP và Rest Services, FTP, Database với JDBC.
  • Một IDE (Integrated Development Environment) tốt để bạn có thể sử dụng để ghi lại, xây dựng và gỡ lỗi các bài kiểm tra hiệu năng của bạn.
  • Từ phiên bản JMeter 3.1 thì Groovy là ngôn ngữ lập trình mặc định.
  • Một trong những công cụ kiểm tra hiệu suất phổ biến nhất.
  • Nguồn mở, miễn phí
  • Giao diện đơn giản, trực quan dễ sử dụng
  • JMeter lưu các kịch bản kiểm thử của nó dưới dạng các file XML, do đó ta có thể tự tạo các kịch bản kiểm thử của mình bằng một trình soạn thảo bất kỳ và load nó lên
  • Đa luồng, giúp xử lý tạo nhiều request cùng một khoảng thời gian, xử lý các dữ liệu thu được một cách hiệu quả

Nhược điểm của Jmeter

  • Gặp khó khăn khi mở rộng quy mô xử lý những bài test phân phối lớn. Đặc biệt nếu bạn thiết lập một cụm máy thì bạn phải cấu hình để chúng có thể trao đổi với nhau.
  • Gặp một loạt các vấn đề dàn xếp khi thực hiện các bài kiểm tra lớn.

Trang chủ và download chương trìnhhttp://jmeter.apache.org/

Hình ảnh lab Apache Jmeter

công cụ jmeter - 1
Add vào dạng test là HTTP Request
jmeter - 2
Kết quả xem theo dạng table
jmeter - 3
Kết quả xem theo dạng tree
jmeter - 4
Kết quả xem theo dạng gragh

2. Locust

Đây là công cụ kiểm tra tải đơn giản, dễ sử dụng và dễ phân phối và tất nhiên nó được sử dụng để kiểm thử tải trang web rồi. Locust cũng có thể giúp bạn tìm ra bao nhiêu người dùng truy cập đồng thời trên web mà hệ thống có thể xử lý được. Bạn cũng có thể xác định hành vi mà bạn muốn cho từng trường hợp kiểm thử. Ngoài ra Locust còn cung cấp giao diện web để bạn theo dõi quá trình benchmark theo thời gian thực.

Trang chủhttps://locust.io
Githubhttps://github.com/locustio/locust

Ưu điểm của Locust

  • Khả năng tạo kịch bản cho bài test bằng python.
  • Dễ dàng quy mô số người truy cập mà bạn cần.
  • Giao diện trên nền web rất chất, đẹp.
  • Có khả năng mở rộng.
  • Hiệu quả trong việc test các API.
  • Trên Github hiện tại nó đang được 6293 sao đấy nhé.

Nhược điểm của Locust

  • Hiện tại chưa thấy nhiều báo cáo về nhược điểm của Locust cả, tuy nhiên bản thân mình thấy thì Locust chỉ sử dụng được khi OS cài python 2.7, 3.3, 3.4, 3.5, và 3.6.
  • Mình lab thử trên CentOS 6 thì phải cài thêm python 2.7 vì trên CentOS 6 chỉ mặc định cài python 2.6 mà thôi, hơi bất tiện xíu nhưng không sao.

Hình ảnh lab Locust

Tạo 1 file test mang tên locustfile.py . Do Locust sẽ chạy thực thi dựa trên 1 file cấu hình chuẩn Python, bạn có thể đọc thêm tài liệu.

from locust import HttpLocust, TaskSet

def index(l):
    l.client.get("/")

def index2(l):
    l.client.get("/kiem-tra-nhiet-do-cpu-tren-linux.html")

class UserBehavior(TaskSet):
    tasks = {index: 2, index2: 1}

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 5000
    max_wait = 9000

Lưu lại và chạy tiếp lệnh sau:

locust --host=https://cuongquach.com

Trên trình duyệt web bạn truy cập vào theo dạng: http://<ip_server>:8089 . Giao diện Locust khi đăng nhập, nơi bạn có thể quy định bao nhiêu user truy cập và mỗi giây có bao nhiêu user sinh ra

locust - 1

Thống kê theo dạng bảng.

locust 2

Thống kê theo dạng graghlocust -3

Thống kê số lượng request fail và nguyên nhân.

Bạn cũng có thể download kết quả benchmark về theo dạng file CSV

locust -5

3. Gatling

gatling logo

Là công cụ đo khả năng chịu tải được xây dựng trên nền Scala, Akka và Netty. Nó cho phép bạn kiểm tra và đo đạt hiệu suất của ứng dụng end-to-end như website cụ thể.

Trang chủ: https://gatling.io
Github Gatling: https://github.com/gatling/gatling

Ưu điểm của Gatling

  • Là một DSL (Digital Subcriber Line) đơn giản nhưng mạnh mẽ.
  • Dễ dàng mở rộng.
  • Nếu bạn đang tham gia Scala và nhận được vô số lợi ích mà Scala mang lại thì đây chính là công cụ của bạn.
  • Bản thân Gatling có 1 “máy tạo/ghi kịch bản”, thuận lợi cho bạn tạo kịch bản để benchmark tải.
  • Hiện tại Gatling đang được 3297 sao trên Github.

Hình ảnh lab Gatling

Giao diện để bạn tạo kịch bản.

gatling - 1

Bắt đầu truy cập và kết quả được ghi vào gatling record.

gatling - 3

Chạy tiếp gatling.bat để kiểm thử kết quả ghi được của record.

gatling-4

Bạn có thể xem thêm hình ảnh bằng cách truy cập vào link như kết quả ở hình trên.

gatling - 5

Và đây nữa.

gatling-6Đây nữa!

gatling-7

4. Taurus

taurus - 1

Sức mạnh của Taurus là cho phép bạn viết các đoạn kiểm thử trong YAML, bạn có thể mô tả đầy đủ một kịch bản để kiểm thử chỉ trong mười dòng. Đây là bước nhảy lớn so với khi xưa khi phải tạo một bảng lệnh và hàng loạt lệnh kịch bản lớn.

Trang chủhttps://gettaurus.org

Ưu điểm của Taurus

  • Điều này cho phép nhiều thành viên trong nhóm của bạn đóng góp vào các bài kiểm tra hiệu suất. Ngoài ra việc viết kịch bản bằng mã YAML sẽ giúp bạn dễ đọc, dễ hiểu hơn và biết mình phải thao tác chỉnh sửa gì cho phù hợp.
  • Phù hợp với việc kiểm tra hiệu suất vào đường ống CI/CD (Continuous Integration/ Continuous Deployment) một cách hiệu quả.
  • Taurus kế thừa một loạt các tính năng của JMeter cũng như một số công cụ khác như là Locust, Gatling, the grinder… vì vậy phát huy ưu điểm từng loại cực tốt.
  • Hiện tại đang có 517 sao trên Github.

Hình ảnh lab Taurus

Tạo file test.yml nội dung sau:

---
execution:
- concurrency: 10
  ramp-up: 1m
  hold-for: 1m30s
  scenario: simple
  
scenarios:
  simple:
    think-time: 0.75
    requests:
    - https://cuongquach.com/

Lưu lại và chạy lệnh sau.

# bzt test.yml

Quá trình chạy benchmark.

taurus - 2

Sau khi chạy xong và bạn có thể xem thêm log tại Artifacts dir.

taurus - 3

5. Siege

Siege là một tiện ích mã nguồn mở sử dụng command-line để kiểm thử khả năng chịu tải của site. Chương trình này sẽ báo cáo cho bạn biết tổng số lượng truy cập được ghi lại, số byte được chuyển đi, thời gian phản hồi, truy cập đồng thời và status code được trả về.

Trang chủhttps://www.joedog.org/siege-home/
Github:  https://github.com/JoeDog/siege

Ưu điểm của Siege

  • Hỗ trợ xác thực cơ bản, cookies,các phương thức HTTP, HTTPS và FTP.
  • Công cụ tuyệt vời để tạo brute force cơ bản để kiểm thử.
  • Cho phép người sử dụng truy cập vào server với cấu hình số lượng người truy cập đồng thời.

Nhược điểm của Siege

  • Giao diện command-line không được bắt mắt.
  • Khó sử dụng nếu là người dùng cơ bản (mà nếu người dùng cơ bản chắc họ cũng sẽ không biết hoặc không chọn cách benchmark này đâu)

Hình ảnh lab Siege

Trên giao diện dòng lệnh, chạy lệnh sau:

# siege https://cuongquach.com

Quá trình benchmark sẽ chạy như thế này.

siege - 01

Còn đây là kết quả!

siege - 2

Vậy là bạn đã bước qua phần 1 của Top 10 công cụ mã nguồn mở kiểm tra tải website rồi phải không nào ?! Hy vọng với 5 công cụ đã kể trên sẽ cho bạn các thông tin thú vị để thử nghiệm các công cụ phù hợp với nhu cầu kiểm tra tải website của bạn nhé. Ở phần kế tiếp chúng ta sẽ đến với 5 công cụ khác cũng khá là thú vị. Các bạn hãy đón chờ đọc tại Cuongquach.com nhé.

Previous articleTop 6 cách xác định loại file system trên Linux (ext2, ext3 hay ext4)
Next article[vSphere] Hướng dẫn xem lịch sử lệnh (history command) trên ESXi Shell
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !