Cách kiểm tra khả năng chịu tải của website

Nếu bạn đang thì việc và khả năng chịu tải của website là điều hết sức cần thiết. Trong bài viết này, xTraffic.pep.vn sẽ giới thiệu đến với các bạn những công cụ và dịch vụ miễn phí giúp bạn (free stress testing tools for websites) bằng cách giả lập nhiều truy vấn cùng lúc.

Cách kiểm tra khả năng chịu tải của website - Apache Apache Benchmark Benchmark boom khả năng chịu tải kiểm tra hiệu năng kiểm tra khả năng chịu tải của website loadimpact Siege SlowHTTPTest testing tools website websites wrk - Webmasters Tools

Kiểm tra khả năng chịu tải của website bằng công cụ Siege

Siege là một công cụ miễn phí chạy trên Linux giúp bạn giả lập các kết nối http đến website mục tiêu mà bạn muốn kiểm tra hiệu năng và khả năng chịu tải.

Để cài đặt và chạy được Siege, bạn phải có 1 VPS hoặc Server chạy hệ điều hành Linux. Trong bài này, xTraffic.pep.vn sẽ hướng dẫn bạn cách cài đặt Siege trên CentOS (nếu bạn chưa có VPS thì có thể tham khảo thêm cách đăng ký và tạo VPS giá rẻ DigitalOcean tại đây)

Đầu tiên, bạn cần phải cài đặt EPEL Repository & REMI Repository theo hướng dẫn tại đây . Sau đó, bạn chạy lệnh sau để cài đặt Siege trên CentOS :

sudo yum install -y siege

Hướng dẫn sử dụng siege

Lệnh siege được sử dụng theo cú pháp sau :

siege <options> [target_url]
  • [target_url] là url của website mục tiêu mà bạn muốn test thử
  • <options> là các tham số tuỳ chọn giúp chạy siege theo ý muốn của bạn, bao gồm các tham số chính sau :
    •  –concurrent=NUM (viết tắt là -cNUM ) : (bắt buộc) là số kết nối đồng thời được giả lập.
    •  –time=NUMs  (viết tắt là -tNUMs ) : là thời gian chạy kiểm tra

 

Ví dụ : lệnh sau đây sẽ giả lập 100 kết nối cùng lúc và chạy kiểm tra trong vòng 60 giây đến url là http://blog-xtraffic.pep.vn/

siege -c100 -t60s http://blog-xtraffic.pep.vn/

Kiểm tra khả năng chịu tải của website bằng công cụ Apache Benchmark (ab)

Apache Benchmark (ab)  là một công cụ miễn phí do Apache phát triển, giúp bạn giả lập các kết nối để kiểm tra khả năng chịu tải của website

Thông thường thì công cụ Apache Benchmark (ab) đã được cài mặc định trên CentOS, bạn có thể chạy lệnh sau để kiểm tra xem có Apache Benchmark (ab) trên server của bạn hay chưa :

ab -V

Nếu xuất hiện thông báo như sau thì server/vps của bạn đã có Apache Benchmark (ab) rồi :

[root@ramnode-xtraffic ~]# ab -V
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

[root@ramnode-xtraffic ~]#

Nếu chưa có thì bạn có thể cài đặt Apache Benchmark (ab) trên CentOS bằng lệnh sau :

sudo yum install -y httpd httpd-tools

Hướng dẫn sử dụng Apache Benchmark (ab)

Apache Benchmark (ab) được sử dụng theo cú pháp sau :

ab [ -A auth-username:password ] [ -c concurrency ] [ -h ] [ -H custom-header ] [ -k ] [ -n requests ] [ -P proxy-auth-username:password ] [ -r ] [ -t timelimit ] [ -v verbosity] [ -w ] [ -X proxy[:port] ] [http[s]://]hostname[:port]/path
  • “[http[s]://]hostname[:port]/path” là url (http hoặc https) của website mục tiêu mà bạn muốn kiểm tra
  • “[ -A auth-username:password ]” : xác thực truy vấn vào website
  • “[ -c concurrency ]” : số kết nối đồng thời được giả lập
  • “[ -h ]” : hiện thị thông tin đã sử dụng
  • “[ -H custom-header ]” : thêm vào headers của mỗi truy vấn. Ví dụ : “Accept-Encoding: zip/zop;8bit”
  • “[ -k ]” : kích hoạt tính năng HTTP KeepAlive, sử dụng nhiều truy vấn với cùng HTTP session
  • “[ -n requests ]” : tổng số truy vấn được tạo
  • “[ -P proxy-auth-username:password ]” : sử dụng xác thực qua proxy
  • “[ -r ]” : tiếp tục thực hiện khi gặp lỗi kết nối
  • “[ -t timelimit ]” : thời gian thực hiện kiểm tra (tính bằng giây)
  • “[ -v verbosity]” : hiển thị chi tiết quá trình thực hiện. Giá trị từ 2 đến 4
  • “[ -w ]” : in kết quả ra HTML tables
  • “[ -X proxy[:port] ]” : sử dụng proxy server cho truy vấn

Ví dụ lệnh cơ bản sau sẽ tạo 100 kết nối cùng lúc với 1000 truy vấn trong thời gian tối đa 60 giây đến url http://blog-xtraffic.pep.vn/

ab -c 100 -k -n 1000 -r -t 60 -v 3 http://blog-xtraffic.pep.vn/

Kiểm tra khả năng chịu tải của website bằng công cụ wrk ( Modern HTTP benchmarking tool – https://github.com/wg/wrk )

wrk là một công cụ kiểm tra khả năng chịu tải của website bằng cách giả lập nhiều kết nối đồng thời đến website của bạn.

Bạn có thể cài đặt wrk benchmark trên VPS CentOS bằng cách thực hiện lần lượt các lệnh sau :

sudo  yum groupinstall -y 'Development Tools'
sudo yum install -y openssl-devel
sudo yum install -y git
git clone https://github.com/wg/wrk.git
cd wrk
make
sudo cp wrk /usr/local/bin

Sau khi cài đặt xong, bạn có thể kiểm tra xem wrk đã cài đặt thành công hay chưa bằng cách dùng lệnh sau :

wrk -v

Nếu xuất hiện tương tự như sau thì wrk đã được cài đặt thành công trên VPS của bạn :

[root@xtraffic]# wrk -v
wrk 3.1.1 [epoll] Copyright (C) 2012 Will Glozer
Usage: wrk 
  Options:
    -c, --connections   Connections to keep open
    -d, --duration      Duration of test
    -t, --threads       Number of threads to use

    -s, --script        Load Lua script file
    -H, --header        Add header to request
        --latency       Print latency statistics
        --timeout       Socket/request timeout
    -v, --version       Print version details

  Numeric arguments may include a SI unit (1k, 1M, 1G)
  Time arguments may include a time unit (2s, 2m, 2h)
[root@xtraffic wrk]#

Để kiểm tra khả năng chịu tải của 1 website, bạn thực hiện lệnh tương tự như sau :

wrk -t10 -c100 -d15s http://blog-xtraffic.pep.vn

Trong đó :

  • -t10 : 10 threads
  • -c100 : 100 connections
  • -d15s : thực hiện trong vòng 15 giây (seconds)
  • http://blog-xtraffic.pep.vn : là link website mục tiêu bạn muốn kiểm tra

Kiểm tra khả năng chịu tải của website bằng công cụ boom ( https://github.com/rakyll/boom )

boom là một công cụ kiểm tra khả năng chịu tải của website bằng cách giả lập nhiều kết nối đồng thời đến website của bạn. Công cụ này được viết bằng ngôn ngữ lập trình Go của Google.

Bạn có thể cài đặt boom benchmark trên VPS CentOS bằng cách thực hiện lần lượt các lệnh sau :

sudo yum install -y golang
export GOROOT=/usr/lib/golang
export GOPATH=/usr/share/gocode
export PATH=$PATH:$GOROOT/bin
go get github.com/rakyll/boom
sudo cp /usr/share/gocode/bin/boom /usr/local/bin

Sau khi cài đặt xong, bạn có thể kiểm tra xem boom đã cài đặt thành công hay chưa bằng cách dùng lệnh sau :

boom

Nếu xuất hiện tương tự như sau thì wrk đã được cài đặt thành công trên VPS của bạn :

[root@xtraffic]# boom
Usage: boom [options...] 

Options:
  -n  Number of requests to run.
  -c  Number of requests to run concurrently. Total number of requests cannot
      be smaller than the concurency level.
  -q  Rate limit, in seconds (QPS).
  -o  Output type. If none provided, a summary is printed.
      "csv" is the only supported alternative. Dumps the response
      metrics in comma-seperated values format.

  -m  HTTP method, one of GET, POST, PUT, DELETE, HEAD, OPTIONS.
  -h  Custom HTTP headers, name1:value1;name2:value2.
  -t  Timeout in ms.
  -A  HTTP Accept header.
  -d  HTTP request body.
  -T  Content-type, defaults to "text/html".
  -a  Basic authentication, username:password.
  -x  HTTP Proxy address as host:port.

  -allow-insecure       Allow bad/expired TLS/SSL certificates.
  -disable-compression  Disable compression.
  -disable-keepalive    Disable keep-alive, prevents re-use of TCP
                        connections between different HTTP requests.
  -cpus                 Number of used cpu cores.
                        (default for current machine is 1 cores)

[root@xtraffic]#

Để kiểm tra khả năng chịu tải của 1 website, bạn thực hiện lệnh tương tự như sau :

boom -n 1000 -c 10 -allow-insecure http://blog-xtraffic.pep.vn

Trong đó :

  • -n 1000 : 1000 truy vấn (requests)
  • -c 10 : 10 kết nối cùng lúc (Number of requests to run concurrently). Lưu ý là con số của “-c” không được lớn hơn con số của “-n”
  • -allow-insecure : Allow bad/expired TLS/SSL certificates
  • http://blog-xtraffic.pep.vn : là link website mục tiêu bạn muốn kiểm tra

Kiểm tra khả năng chịu tải của website bằng công cụ SlowHTTPTest

SlowHTTPTest là một công cụ miễn phí chạy trên nền tảng Linux. Đây là một công cụ được mô tả là giả lập tấn công DDOS (Application layer DDoS attack) nên bạn cần sử dụng nó cẩn thận và đúng mục đích. Bạn có thể dùng công cụ này để vừa kiểm tra khả năng chịu tải của website hoặc khả năng chống đỡ của website trước các cuộc tấn công DDOS có quy mô nhỏ và đơn giản

Để cài đặt SlowHTTPTest trên CentOS, bạn chỉ cần thực hiện lệnh sau :

sudo yum install -y slowhttptest

Hướng dẫn sử dụng SlowHTTPTest

SlowHTTPTest thực hiện theo cú pháp sau :

slowhttptest [options] -u http://host[:port]/path/

[options] bao gồm các tuỳ chọn cơ bản sau :
-c number of connections : số kết nối, giá trị tối đa là 65539
-g : tạo dữ liệu thống kê theo định dạng CSV và HTML
-o file : xuất dữ liệu thống kê ra file có đường dẫn tuỳ chọn
-r connections per second : số kết nối trong 1 giây
-H, B, R or X : kiểu tấn công DDOS
-t verb : bao gồm giá trị FAKEVERB, GET, POST
-v level : mức độ thống kê chi tiết, có giá trị từ 0 đến 4

Bảng chi tiết các tuỳ chọn của SlowHTTPTest
-a startstart value of ranges-specifier for range header test
-b byteslimit of range-specifier for range header test
-c number of connectionslimited to 65539
-d proxy host:portfor directing all traffic through web proxy
-e proxy host:portfor directing only probe traffic through web proxy
-H, B, R or Xspecify to slow down in headers section or in message body, -R enables range test, -X enables slow read test
-ggenerate statistics in CSV and HTML formats, pattern is slow_xxx.csv/html, where xxx is the time and date
-i secondsinterval between follow up data in seconds, per connection
-k pipeline factornumber of times to repeat the request in the same connection for slow read test if server supports HTTP pipe-lining.
-l secondstest duration in seconds
-n secondsinterval between read operations from receive buffer
-o filecustom output file path and/or name, effective if -g is specified
-p secondstimeout to wait for HTTP response on probe connection, after which server is considered inaccessible
-r connections per secondconnection rate
-s bytesvalue of Content-Length header, if -B specified
-t verbcustom verb to use
-u URLtarget URL, the same format you type in browser, e.g https://host[:port]/
-v levelverbosity level of log 0-4
-w bytesstart of range the advertised window size would be picked from
-x bytesmax length of follow up data
-y bytesend of range the advertised window size would be picked from
-z bytesbytes to read from receive buffer with single read() operation

Ví dụ lệnh tấn công DDOS theo kiểu slow message body :

slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://example.com/loginform.php -x 10 -p 3

Ví dụ lệnh tấn công DDOS theo kiểu slowloris :

slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u https://example.com/index.php -x 24 -p 3

Ví dụ lệnh tấn công DDOS theo kiểu slow read mode thông qua proxy x.x.x.x:8080 :

slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u http://example.com/somebigresource -p 5 -l 350 -e x.x.x.x:8080

 

Kiểm tra khả năng chịu tải của website với dịch vụ miễn phí Loadimpact

Cách kiểm tra khả năng chịu tải của website - Apache Apache Benchmark Benchmark boom khả năng chịu tải kiểm tra hiệu năng kiểm tra khả năng chịu tải của website loadimpact Siege SlowHTTPTest testing tools website websites wrk - Webmasters Tools

Loadimpact Homepage

Loadimpact cũng là một dịch vụ miễn phí rất tốt giúp bạn kiểm tra khả năng chịu tải của website. Bạn không cần phải có VPS hoặc Server để sử dụng, tất cả các truy vấn đều được giả lập trên các server Loadimpact nằm nhiều nơi trên thế giới. Bạn chỉ cần vào website của Loadimpact tại đây và nhập url của website bạn cần kiểm tra, mọi thứ đều được thực hiện tự động và được báo cáo chi tiết.