Hướng dẫn sử dụng AB Benchmarking Tool

  • Monday 13/02/2023

Hướng dẫn sử dụng AB Benchmarking Tool

Công cụ Apache HTTP server benchmarking tool (ab) được phát triển bởi Apache Software Foundation, là công cụ tạo ra tải mô phỏng cho Web Server bằng cách gửi các request đồng thời tới máy chủ. Công cụ này được tích hợp mặc định sau khi cài dịch vụ HTTP Apache Web Server phục vụ việc đánh giá Web server sau khi cài đặt.

Bước 1: SSH vào VPS/server

Quý Khách có thể tham khảo hướng dẫn SSH tới VPS/Server tại link: https://kb.pavietnam.vn/ssh-toi-server-linux-bang-putty.html

Bước 2: Cài AB Benchmarking lên CentOS/Ubuntu

  • CentOS: yum install httpd-tools
  • Ubuntu: apt-get install apache2-utils

install AB Benchmarking

Bước 3: Hướng dẫn sử dụng AB Benchmarking Tool

Trước tiên Quý Khách cần tìm hiểu qua cú pháp để sử dụng:

ab [options] <IP hoặc Domain>:<port><path>

Trong đó [options] có rất nhiều sự lựa chọn. Tham khảo thêm khi bạn chạy lệnh sau: ab -v

Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make at a time
    -t timelimit    Seconds to max. to spend on benchmarking
                    This implies -n 50000
    -s timeout      Seconds to max. wait for each response
                    Default is 30 seconds
    -b windowsize   Size of TCP send/receive buffer, in bytes
    -B address      Address to bind to when making outgoing connections
    -p postfile     File containing data to POST. Remember also to set -T
    -u putfile      File containing data to PUT. Remember also to set -T
    -T content-type Content-type header to use for POST/PUT data, eg.
                    'application/x-www-form-urlencoded'
                    Default is 'text/plain'
    -v verbosity    How much troubleshooting info to print
    -w              Print out results in HTML tables
    -i              Use HEAD instead of GET
    -x attributes   String to insert as table attributes
    -y attributes   String to insert as tr attributes
    -z attributes   String to insert as td or th attributes
    -C attribute    Add cookie, eg. 'Apache=1234'. (repeatable)
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -q              Do not show progress when doing more than 150 requests
    -l              Accept variable document length (use this for dynamic pages)
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -r              Don't exit on socket receive errors.
    -m method       Method name
    -h              Display usage information (this message)
    -I              Disable TLS Server Name Indication (SNI) extension
    -Z ciphersuite  Specify SSL/TLS cipher suite (See openssl ciphers)
    -f protocol     Specify SSL/TLS protocol
                    (TLS1, TLS1.1, TLS1.2 or ALL)
    -E certfile     Specify optional client certificate chain and private key

Quý Khách cần chú ý đến những tham số cơ bản sau: Các tham số cơ bản:

  • -n :Tổng số request muốn test
  • -c : Số lượng request thực hiện đồng thời trong cùng một thời điểm.

Ví dụ: Giả sử ta muốn test mô phỏng cho 100 users truy cập cùng một lúc để lấy Voucher trong Shopee. Vì thói quen của users là muốn có nhanh cho nên họ sẽ refresh page liên tục, ta cho là 50 lần. Như vậy ta có 100 người truy cập và tổng số lượng request = 100 * 50 = 5000 request. Vậy ta sẽ thiết lập như sau:

ab -n 5000 -c 100 http://website.com

Quý Khách sẽ được kết quả tương tự như sau:

Server Software: LiteSpeed
Server Hostname: website.com
Server Port: 80

Document Path: /
Document Length: 167279 bytes

Concurrency Level: 100
Time taken for tests: 619.516 seconds
Complete requests: 5000
Failed requests: 0
Total transferred: 838781344 bytes
HTML transferred: 836395000 bytes
Requests per second: 8.07 [#/sec] (mean)
Time per request: 12390.318 [ms] (mean)
Time per request: 123.903 [ms] (mean, across all concurrent requests)
Transfer rate: 1322.20 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 6
Processing: 350 12259 12804.8 10121 161228
Waiting: 331 12225 12804.2 10073 161166
Total: 350 12259 12804.8 10121 161228

Percentage of the requests served within a certain time (ms)
50% 10121
66% 13883
75% 16023
80% 17655
90% 22295
95% 25562
98% 49937
99% 64162
100% 161228 (longest request)

Screenshot 8

Giải thích ý nghĩa:

  • Server Software – Phiển bản hiện thời của Web Server
  • Server Hostname – DNS hoặc IP cung cấp cho việc đánh giá, chỉ định port trên command line
  • Server Port – Port kết nối tới, nếu không chỉ định port trên command line, giá trị mặc định là 80 cho http hoặc 443 cho https
  • SSL/TLS Protocol – Giao thức sử dụng mặc định giữa client và Server, sẽ chỉ xuất hiện nếu sử dụng SSL
  • Document Path – Request URI chỉ định Test
  • Document Length – Độ dài của phản hồi (HTML, CSS), tính bằng byte. Nếu độ dài của phản hồi thay đổi, kết quả phản hồi được coi là lỗi
  • Concurrency Level – Số lượng client đồng thời gửi request
  • Time taken for tests – Tổng thời gian test, tính từ request đầu tiên tới request cuối cùng
  • Complete requests – Số lượng Request thành công
  • Failed requests – Số lượng Request thất bại, nếu có sẽ có mô tả về lỗi
  • Non-2xx responses – Số lượng phản hồi không phải status code 200.
  • Total body sent – Chỉ quan tâm khi bài test thực hiện hành động POST hoặc PUT tới server
  • Total transferred – Tổng số byte nhận được từ server
  • HTML transferred – Số lượng byte nhận được (Các file html), kết quả đã loại bỏ số byte trong HTTP header
  • Requests per second – Tổng số request thực hiện trong 1s. Tính bằng tổng thời gian chia số lượng request hoàn thành (Time taken for tests / Complete requests)
  • Time per request – Thời gian trung bình trên một request.
  • Transfer rate – Tốc độ đường truyền (Downloading tại client). Tính bằng: <tổng byte=”” nhận=””>/ 1024 /<thời gian=”” thực=”” hiện=””></thời></tổng>
  • Connection Times: Tính bằng ms
    • Connect và Waiting times: Thời gian sử dụng để mở kết nối và nhận kết quả (bit đầu tiên)
    • Processing times: Thời gian đợi server xử lý và phản hồi
    • Total time: Tổng thời gian xử lý (Connect + Processsing + Waiting)

Phân tích kết quả:

  • Phiên bản hiện tại của Apache webserver là Litespeed
  • Sẽ có 100 client đồng thời gửi request tới server (Concurrency Level)
  • Quá trình truyển tải hết 838.781344 MB (838781344 bytes) cho 10000 request
  • Hoàn thành test mất 619,516s
  • Có 8.07 request thực hiện trong 1s (Requests per second)
  • Băng thông sử dụng hết 1322.20 Kbytes/sec (Transfer rate)

========================================

P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/ 

5/5 - (1 bình chọn)