Thực hành dùng ApacheBench để kiểm tra hiệu suất website

Lý thuyết về cách dùng Apache Benchmark ở đây, giờ chúng ta sẽ đi vào phần thực hành.

Chuẩn bị:

  • 1 VPS để cài trang WordPress, hoặc bạn có sẵn website để thử
  • 1 VPS để cài Apache Benchmark (Trước đó cần cài Ubuntu LTS, ví dụ v24.04)

1. Cài Apache Benchmark

Nạp danh sách các gói mới nhất cho Ubuntu:

sudo apt-get update

Cập nhật phiên bản mới nhất cho apache2-utils, gói này có bao gồm Apache Benchmark:

sudo apt-get install apache2-utils

2. Thực hiện lệnh Apache Benchmark

Câu lệnh, ví dụ:

ab -n 1000 -c 10 https://example.com/

Trong đó https://example.com/ là địa chỉ cần kiểm tra, nó có thể là một trang cụ thể trên website, chứ không cần phải là tên miền gốc.

Kiểm tra website freehost.page với Apache Bench
Hình 1
Kiểm tra website kiencang.net với Apache Bench
Hình 2

Cả 2 website kiểm tra với Apache Benchmark, cấu hình VPS của 2 website khá tương đồng, nhưng panel khác nhau, và một bên có Cloudflare (web của hình 2).

Kết quả cho thấy:

  • Demo ở điều kiện tương đối đơn giản với 10 request đồng thời, và có tổng cộng 1000 request.
  • Cả 2 đều hoạt động ổn định khi cả 1000 request, không có request nào lỗi (nằm ngoài dải 2xx), tức là nếu máy khách yêu cầu, máy chủ đều trả về.
  • Tuy nhiên hình 1 cho thấy tốc độ phản hồi khá chậm (90% request phản hồi trong 887ms), trong khi hình 2 cho thấy tốc độ phản hồi cao hơn khá nhiều (90% request phản hồi trong 276ms). Lý do có khả năng cao do cài Cloudflare & do thiết lập máy chủ Nginx thuần cho trang thuộc hình 2, trong khi hình 1 là Nginx + Apache (chưa có thêm plugin cache).

Trang thuộc hình 1 được thêm plugin cache (Cache Enabler) nhưng có vẻ tình hình không có cải thiện gì, thậm chí còn bị chậm hơn một chút:

Kiểm tra Apache Bench sau khi cài thêm plugin Cache Enabler

Ở thử nghiệm cuối tôi thiết lập để trang thuộc hình 1 cũng dùng Nginx thuần thay vì dạng lai, và không cài thêm plugin cache (vì bản Nginx thuần đã có FastCGI cache).

Kiểm tra website freehost.page (nginx thuần) với Apache Bench

Có vẻ với cài đặt Nginx thuần và bật FastCGI cache, kết quả cải thiện hơn rất nhiều. Với 90% request có phản hồi nằm trong 243ms. Xét ở mốc 99% thậm chí còn tốt hơn so với hình 2.

Ở mốc 30 request đồng thời, và vẫn thực hiện đủ 1000 request, ta thấy nó phản hồi vẫn khá tốt:

Kiểm tra website freehost.page (nginx thuần) với Apache Bench, với 30 request đồng thời

Còn website hình 2 khi có request tương tự (30rq/s, total: 1000rq):

Kiểm tra website kiencang.net với Apache Bench, với 30 request đồng thời

3. Kết luận

Chúng ta có thể thấy rằng với Apache Benchmark (ab), các kết quả kiểm tra tương đối rõ ràng & trực quan, có 2 thông tin rất quan trọng bài kiểm tra này thông báo mà bạn cần để ý:

  • Số lượng request thành công cho thấy mức độ ổn định của máy chủ. Lý tưởng nhất là 100% request thành công.
  • Tỷ lệ phần trăm các request được phục vụ trong thời gian nhất định (ms). Cho thấy tốc độ phản hồi các request tốt đến đâu tương ứng với mức ‘căng’ của request.

Chúng ta có thể sử dụng ab để so sánh các cấu hình tối ưu website, ví dụ trên WordPress, xem rằng lựa chọn panel với cấu hình xyz (nginx, openlitespeed, nginx + apache, litespeed), kết hợp cache abc (FastCGI cache, Varnish cache, Litespeed cache, WP-Rocket,…) có hiệu quả hơn hay không?

Viết một bình luận