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.