Apache ab: vui lòng giải thích đầu ra


31

Tôi đã nhìn xung quanh và không thể tìm thấy bất kỳ lời giải thích chi tiết nào về đầu ra. Hầu hết thực sự dễ hiểu, nhưng có một phần làm tôi bối rối:

Time per request:       109537.505 [ms] (mean)
Time per request:       109.538 [ms] (mean, across all concurrent requests)

Điều này có nghĩa - với tôi - rằng nếu bạn đo lường tất cả các yêu cầu đồng thời (bất kể điều đó có nghĩa là gì) thì các yêu cầu đột nhiên được trả lại nhanh hơn 100 lần. Tại sao thời gian cho mỗi yêu cầu thay đổi nhiều như vậy? Điều này không có ý nghĩa.

Có bất kỳ lời giải thích chi tiết về điều này và các phần khác của đầu ra ab?

Câu trả lời:


53

Nếu bạn đặt đồng thời ở mức 1, không có sự khác biệt giữa hai cái đó. Nó bắt đầu quan trọng khi bạn có nhiều hơn 1 yêu cầu được thực hiện đồng thời.

Hãy xem xét một ví dụ về những gì tôi nhận được trên localhost:

ab -c 1 -n 1000 http://localhost/

sẽ cho:

Time taken for tests:   3.912 seconds
Time per request:       3.912 [ms] (mean)
Time per request:       3.912 [ms] (mean, across all concurrent requests)

Điều này có nghĩa là cần 3.912 giây để thực hiện 1000 yêu cầu từng cái một. Vì vậy, một yêu cầu duy nhất cần trung bình 3,912 giây / 1000 = 3,912 ms.

Bây giờ hãy tăng cường mức độ tương tranh một chút:

ab -c 10 -n 1000 http://localhost/

Time taken for tests:   0.730 seconds
Time per request:       7.303 [ms] (mean)
Time per request:       0.730 [ms] (mean, across all concurrent requests)

Lần này thay vì 3.912 giây chúng ta chỉ cần 0,730 giây để hoàn thành công việc. Chúng tôi đã thực hiện 1000 yêu cầu trong 0,730 giây, do đó, một yêu cầu sẽ mất trung bình 0,730 giây / 1000 = 0,730 ms (dòng cuối cùng). Nhưng tình hình hơi khác một chút, vì chúng tôi hiện đang thực hiện đồng thời 10 yêu cầu. Vì vậy, trên thực tế, số của chúng tôi ở đây không phản ánh thời gian thực cần cho một yêu cầu để hoàn thành . 0,730 ms * 10 (số lượng yêu cầu đồng thời) = 7,303 ms. Đó là thời gian trung bình để một yêu cầu hoàn thành nếu nó được thực hiện không đồng thời (hoặc chính xác hơn, theo cách cô lập ở cấp độ tương tranh hiện tại).

Số cuối cùng bạn thấy (0,730 ms) được sử dụng để cho biết tổng thời gian sẽ tăng thêm bao nhiêu nếu bạn đã thêm 1 yêu cầu ( -n 1001) sử dụng mức đồng thời hiện tại -c 10(ít nhất là về mặt lý thuyết là như vậy).

7.303 ms cung cấp cho bạn tổng quan về thời gian một yêu cầu đơn lẻ sẽ chạy.

Thay đổi bạn thấy giữa ví dụ -c 1-c 10:

[-c 1 ]: Time per request:       3.912 [ms] (mean)
[-c 10]: Time per request:       7.303 [ms] (mean)

có nghĩa là một yêu cầu duy nhất chạy nhanh hơn nếu nó là yêu cầu duy nhất được thực thi -c 1. Nếu có nhiều yêu cầu -c 10cạnh tranh tài nguyên, một yêu cầu sẽ mất nhiều thời gian hơn để hoàn thành. Nhưng nếu bạn xem xét thực tế rằng bạn đang thực hiện 10 yêu cầu như vậy cùng một lúc, trong 7.303 ms này, bạn xử lý 10 yêu cầu thay vì 1.

Vì vậy, như một thước đo độ trễ cho một yêu cầu duy nhất - 7.303 ms hữu ích hơn. Nhưng như một thước đo hiệu suất - 0,730 ms có ý nghĩa hơn. Trong thực tế là 0,730 ms <3,912 ms bạn thấy rằng bạn sẽ có thể phục vụ nhiều yêu cầu hơn mỗi giây trên tổng hợp nếu bạn cho phép 10 yêu cầu đồng thời.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.