Hướng dẫn cài đặt và sử dụng Siege để load testing và benchmark http

30/12/2020

Siege là 1 tiện ích sử dụng để load testing và benchmark http. Nó được thiết kế để cho phép các nhà phát triển web đo lường trang của họ theo thời gian. Nó có thể kiểm tra 1 URL với số lượng người dùng mô phỏng do người dùng xác định.

Nó ghi lại thời gian thử nghiệm cũng như thời lượng của mỗi kết nối. Sau đó báo cáo số lượng transactions, thời gian trôi qua, byte được chuyển, thời gian phản hồi, tốc độ transactions và số lần trả lời với mã trạng thái 200.

Các tính năng bao gồm cuae Siege :

  • Ba chế độ hoạt động: regression, internet simulation và brute force
  • Hỗ trợ các chỉ thị GET và POST
  • Cookies
  • Transaction logging
  • Basic authentication
  • Các tính năng có thể cấu hình tùy vào mỗi người dùng
  • Hỗ trợ hầu hết các tính năng của giao thức HTTP/1.1
  • Hỗ trợ giao thức HTTPS

1. Cài đặt Siege trên Centos 7

Cài đặt siege từ kho lưu trữ có sẵn :

sudo yum update && sudo yum upgrade yum install -y epel-release yum install -y siege

Cài đặt Siege từ nguồn :

yum groupinstall 'Development Tools' cd wget http://download.joedog.org/siege/siege-latest.tar.gz tar -zxvf siege-latest.tar.gz cd siege-*/ ./configure --prefix=/usr/local --with-ssl=/usr/bin/openssl make && make install siege.config siege -C

Sau khi cài đặt hoàn tất, bạn có thể cấu hình tệp cấu hình siege của mình, nó nằm tại /root/.siege/siege.conf . Tiến hành bỏ comment logfiletime, sau đó sửa time = 1M. Tệp cấu hình sau khi chỉnh sửa sẽ như sau :

cat /root/.siege/siege.conf |egrep -v "^$|#"
logfile = $(HOME)/var/siege.log verbose = true color = on quiet = false json_output = true show-logfile = true logging = false logfile = ${HOME}/siege.log gmethod = HEAD parser = true nofollow = ad.doubleclick.net nofollow = pagead2.googlesyndication.com nofollow = ads.pubsqrd.com nofollow = ib.adnxs.com limit = 255 protocol = HTTP/1.1 chunked = true cache = false connection = close concurrent = 25 time = 1M delay = 0.0 internet = false benchmark = false accept-encoding = gzip, deflate url-escaping = true unique = true

Với cấu hình trên sẽ là 25 người dùng đồng thời truy cập trong hơn 1 phút

2. Kiểm tra tải trang web

Để kiểm tra tải trang web, chỉ cần xác định trang web và kiểm tra tải như sau :
siege <url>

Sau khoảng 1 phút ta sẽ được kết quả tương tự như sau :

{       "transactions":                         3419,           "availability":                       100.00,         "elapsed_time":                        59.14,         "data_transferred":                   165.29,         "response_time":                        0.42,         "transaction_rate":                    57.81,         "throughput":                           2.79,         "concurrency":                         24.26,         "successful_transactions":              3419,         "failed_transactions":                     0,         "longest_transaction":                  6.77,         "shortest_transaction":                 0.03 }

Ý nghĩa của các tham số trên như sau :

"transactions":                Tổng số request   "availability":                Tỷ lệ tạo request thành công "elapsed_time":                Thời gian thực hiện "data_transferred":            Tổng dữ liệu đã được truyền qua lại "response_time":               Thời gian phản hồi trung bình "transaction_rate":            Số req/s "throughput":                  Băng thông MB/s "concurrency":                 Số user đồng thời  "successful_transactions":     Số request thành công "failed_transactions":         Số request thất bại  "longest_transaction":         Phản hồi lâu nhất "shortest_transaction":        Phản hồi nhanh nhất

Nếu tính khả dụng (tỷ lệ tạo requests thành công) vẫn ở mức 100% và không có kết nối bị lỗi tức là hệ thống của bạn đã hoạt động tốt và không có vấn đề gì.

Ta có thể sử dụng thêm các tùy chọn đi kèm trong các lệnh. Dưới đây là 1 số tùy chọn được sử dụng phổ biến nhất. Nếu muốn biết thêm các tùy chọn khác hay thông tin đầy đủ hơn, bạn có thể chạy lệnh siege -help.

-c, –concurrent=NUM CONCURRENT users, default is 10 -r, –reps=NUM REPS, number of times to run the test. -t, –time=NUMm TIMED testing where “m” is modifier S, M, or H ex: –time=1H, one hour test. -d, –delay=NUM Time DELAY, random delay before each requst -b, –benchmark BENCHMARK: no delays between requests. -i, –internet INTERNET user simulation, hits URLs randomly. -f, –file=FILE FILE, select a specific URLS FILE.
Thử nghiệm với n người dùng đồng thời truy cập trang web :
siege -c10 <url> -v

dưới đây là đầu ra mẫu:

{       "transactions":                         4306,         "availability":                       100.00,         "elapsed_time":                        59.28,         "data_transferred":                   207.99,         "response_time":                        0.14,         "transaction_rate":                    72.64,         "throughput":                           3.51,         "concurrency":                          9.97,         "successful_transactions":              4306,         "failed_transactions":                     0,         "longest_transaction":                  5.07,         "shortest_transaction":                 0.03 }
Chạy Siege nhiều trang web :

Ta có thể kiểm tra với nhiều URL cùng 1 lúc. Điều này sẽ mô tả chính xác hơn cách người dùng sẽ truy cập trang web của bạn. Bằng cách để cho siege đọc chúng từ tệp /usr/local/etc/urls.txt.

Ví dụ mình sẽ ghi vào file urls.txt như sau:

Bây giờ mình sẽ sử dụng siege để test URL từ file, sử dụng tùy chon -f cho điều này :

siege -f /usr/local/etc/urls.txt

và đầu ra của mình như sau:

{       "transactions":                         5578,         "availability":                        99.98,         "elapsed_time":                        59.63,         "data_transferred":                   250.99,         "response_time":                        0.26,         "transaction_rate":                    93.54,         "throughput":                           4.21,         "concurrency":                         24.42,         "successful_transactions":              5594,         "failed_transactions":                     1,         "longest_transaction":                  5.14,         "shortest_transaction":                 0.03 }

Kết luận

Siege là 1 công cụ mạnh mẽ để đo lường độ tin cậy hệ thống của bạn khi chịu tải cao. Nó có thể được sử dụng bởi các nhà phát triển web phục vụ cho các yêu cầu tải dự kiến của bạn và xem các số liệu khác nhau như thời gian phản hồi, tỷ lệ lỗi, tính khả dụng của phản ứng.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

How to do data recovery from hard drive

This tutorial shows how to recover data from storage devices in Linux. In this case the data will be recovered from a SanDisk...
29/12/2020

Linux Mount Command

In the Linux ecosystem, mounting is one of the major operations that the system relies on. In fact, the filesystem of Linux...
29/12/2020

Install Telegram on Linux

Have you decided to start using Telegram on your Linux Desktop? At first glance it seems that Telegram requires a mobile...
29/12/2020