Loading...

Kiểm thử, đo lường hiệu năng hệ thống

Đo Kiểm Hệ Thống Bằng Công Cụ Apache Bench

1.    Mục tiêu của việc đo kiểm, đánh giá hệ thống

Đánh giá, kiểm nghiệm khả năng đáp ứng của hệ thống.

Xác định ngưỡng hiệu năng đáp ứng của hệ thống/ ứng dụng.

Hỗ trợ đo lường, tính toán tài nguyên hệ thống để phục vụ xây dựng kế hoạch phát triển hệ thống/ ứng dụng.

2.    Lợi ích của việc đo kiểm, đánh giá hệ thống

Cải thiện trải nghiệm người dùng.

Xác định đúng lượng tài nguyên cần thiết xây dựng hệ thống/ ứng dụng, trách lãng phí dư thừa.

Gia tăng độ tin cậy và tính minh bạch của hệ thống/ ứng dụng.

3.    Công cụ

3.1   Apache Bench

Apache Bench (ab) là công cụ được phát triển bởi Apache Software Foundation. Apache Bench được sử dụng để đo lường, đánh giá và kiểm tra một máy chủ Web. Mặc dù Apache Bench được tạo ra dùng để kiểm tra các máy chủ Web của Apache nhưng nó cũng có thể kiểm tra các dịch dụ Web khác với độ chính xác như nhau. Với công cụ này chúng ta có thể mô phỏng hàng trăm hoặc hàng nghìn lượt truy cập đến một máy chủ Web để kiểm tra khả năng chịu tải của nó.

Sau đây là những tính năng của Apache Bench:

  • Là một công cụ mã nguồn mở (Open source);
  • Sử dụng dưới dạng câu lệnh (command line);
  • Tương thích trên nhiều nền tảng khác nhau như Linux/ Unix, Windows;
  • Kiểm tra và đo lường hệ thống máy chủ Web (HTTP hoặc HTTPS).

3.2   Cài đặt Apache bench

Trong tài liệu này, chúng tôi sẽ hướng dẫn các bạn cài đặt Apache Bench trên hệ điều hành Linux/ Unix:

Bước 1: Cập nhật hệ thống

# trên Centos

$ sudo yum update -y

# trên Ubuntu

$ sudo apt-get update -y

Bước 2: Cài đặt Apache Bench

# trên Centos

$ yum install http-tools

# trên Ubuntu

$ sudo apt-get install apache2

Bước 3: Kiểm tra lại

$ ab -V

Kết quả

3.3   Mô phỏng đo kiểm, đánh giá máy chủ Web

Trong hướng dẫn này chúng tôi test trang Web của Công ty HONEYNET, https://honeynet.vn. Chạy command line sau để test

$ ab -n 100 -c 10 https://honeynet.vn

Trong đó:

  • ab: lệnh gọi công cụ Apache Bench;
  • n (number requests) là tổng số requests thực hiện;
  • c (concurrency) là số lượng requests thực hiện đồng thời trong cùng một thời điểm.

Kết quả kiểm tra trang Web của Công ty HONEYNET như sau:

Server Software:        Apache/2
Server Hostname:        honeynet.vn
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Document Path:          /
Document Length:        108301 bytes
Concurrency Level:      10
Time taken for tests:   39.904 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      10883600 bytes
HTML transferred:       10830100 bytes
Requests per second:    2.51 [#/sec] (mean)
Time per request:       3990.382 [ms] (mean)
Time per request:       399.038 [ms] (mean, across all concurrent requests)
Transfer rate:          266.35 [Kbytes/sec] received
Connection Times (ms)
min  mean[+/-sd] median   max
Connect:       10   16  10.4     13      61
Processing:  2073 3661 2509.0   3149   16549
Waiting:     2032 3595 2508.7   3095   16447
Total:       2086 3677 2510.9   3158   16577
Percentage of the requests served within a certain time (ms)
50%   3158
66%   3340
75%   3450
80%   3567
90%   4852
95%  12178
98%  13946
99%  16577
100%  16577 (longest request)

Giải thích ý nghĩa:

  • Server Software: Phiên bản của Web server
  • Server Hostname: DNS hoặc địa chỉ IP của Web server
  • Server Port: Port kết nối đến Web server
  • SSL/TLS Protocol: Giao thức sử dụng kết nối giữa Web server và Client
  • Document Path: URL kết nối đến Web server
  • Document Length: Dung lượng Web server trả về cho client. Nếu dung lượng trả về thay đổi trong quá trình test thì xem như phản hồi bị lỗi
  • Concurrency Level: Số lượng client sử dụng đồng thời trong quá trình test
  • Time taken for tests: Thời gian diễn ra quá trình test. Tính từ request đầu tiên đến request cuối cùng
  • Complete requests: Số lượng request thành công
  • Failed requests: Số lượng request lỗi. Nếu có request lỗi sẽ được hiển thị nguyên nhân dẫn đến request bị lỗi
  • Total transferred: Tổng dung lượng nhận từ Web server
  • Requests per second: Số lượng requests trên một giây. 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).

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

  • Phiên bản hiện tại của máy chủ Web là Apache/2
  • Sẽ có 10 client đồng thời gửi request tới server (Concurrency Level)
  • Quá trình truyền tải hết 10883600 bytes cho 100 request
  • Hoàn thành test mất 90s
  • Có 51 request thực hiện trong 1s (Requests per second)
  • Băng thông sử dụng hết 35 Kbytes/sec (Transfer rate)

3.4   Hiển thị kết quả dưới dạng đồ thị

Hiển thị kết quả kiểm tra dưới dạng đồ thị thực hiện qua các bước như sau:

Bước 1: Xuất kết quả test ở dạng file

$ ab -n 100 -c 10 -g out.data https://honeynet.vn

Bước 2: Kiểm tra kết quả

$ cat out.data

Trong đó:

  • Starttime: Ngày, giờ gửi request
  • seconds: Thời gian được định dạng theo kiểu Unix timestamp
  • ctime: Thời gian mở kết nối
  • dtime: Thời gian xử lý (processing time)
  • ttime: Tổng thời gian
  • wait: Thời gian chờ

Xem ảnh sau để biết thêm sự liên quan giữa các thành phần với nhau

Bước 3: Cài đặt gnuplot

$ yum install gnuplot -y

$ gnuplot

Kết quả

Bước 4: Định dạng Output dưới dạng ASCII

Bước 5: Vẽ đồ thị

Gnuplot> plot “out.data” using 9  w l

Kết quả

4.    Kết luận

Kết quả đo kiểm, đánh giá hệ thống của Apache Bench phản ánh chính xác phần nào hiệu năng, khả năng đáp ứng của máy chủ Web.

Ngoài ra chúng ta cần đánh giá các thành phần khác của máy chủ Web như code, database, network, …

Một số công cụ đánh giá hệ thống khác như:

  • httperf
  • weighttp
  • httpress
  • siege
  • JMeter
  • tourbus

HONEYNET

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *