Giới thiệu nhanh: wrk2 là công cụ benchmark (kiểm tra hiệu suất) được đánh giá cao, nó được phát triển dựa trên phiên bản gốc wrk, với một số điều chỉnh để kết quả báo cáo về độ trễ chính xác hơn (tránh được vấn đề mà họ gọi là ‘coordinated omission‘), cũng như bổ sung tính năng liên quan đến duy trì tốc độ request cố định theo thời gian (ví dụ 100 request/s). Xem nhanh về wrk2 ở đây (bài dịch). Trong phần này chúng ta sẽ tập trung vào thực hành sau khi đã nắm lý thuyết cơ bản.
Chuẩn bị:
- Có sẵn website cần kiểm tra.
- 1 VPS để cài wrk2 chạy lệnh kiểm tra.
Các bước làm.
Lưu ý nhỏ:
- wrk2 có thể tạo ra request (rq) lớn cho website thử nghiệm tùy vào câu lệnh bạn sử dụng.
- Để tránh ảnh hưởng đến website chính, bạn có thể tạo một website demo phục vụ cho việc kiểm tra. Chẳng hạn tạo nhanh một trang WordPress trên nền Nginx + FastCGI cache bằng HestiaCP.
- VPS cài wrk2 cần phải cài sẵn Ubuntu LTS (ví dụ bản 24.04) để phù hợp với hướng dẫn bên dưới.
–
Demo của tôi dựa trên VPS Vultr 6$ HP, 1GB RAM, AMD64, Location: Nhật Bản. Website WordPress dựa trên HestiaCP như bài trên hướng dẫn.
VPS này có benchmark rất tốt so với các gói cùng phân khúc (gb6 trên 1200, IOPS 4k trên 90K, đánh giá bằng YABS):
Bước 1: Cài wrk2 trên VPS
Chúng ta sẽ sử dụng phần mềm PuTTY để đăng nhập và cài đặt wrk2 trên VPS, không nên sử dụng terminal mặc định của VPS (ví dụ qua noVNC), nguyên nhân là vì các báo cáo sau khi chạy lệnh của wrk2 sẽ khá dài, và noVNC sẽ không tiện quan sát, copy, lăn cuộn chuột để xem toàn bộ kết quả…
Giả sử bạn đã đăng nhập vào VPS qua PuTTY.
1. Cập nhật danh sách gói:
sudo apt update
–
2. Cài đặt các công cụ cần thiết để build wrk2 (vì nó không có sẵn trong Ubuntu):
sudo apt install -y build-essential libssl-dev git zlib1g-dev
–
3. Tải và biên dịch wrk2 từ GitHub:
cd ~
git clone https://github.com/giltene/wrk2.git
cd wrk2
make
Giải thích:
cd ~: Di chuyển về thư mục homegit clone https://github.com/giltene/wrk2.git: Tải mã nguồncd wrk2: Di chuyển vào thư mục wrk2make: Chạy lệnh biên dịch
–
4. Chuyển thư mục wrk2 để có thể chạy lệnh ở mọi nơi
Và cũng để nó không bị nhầm lẫn với bản gốc wrk (nếu bạn có cài).
sudo cp wrk /usr/local/bin/wrk2
–
5. Kiểm tra xem wrk2 đã hoạt động chưa
wrk2 -v
Nếu thấy thông báo như dưới đây là đã thành công:
wrk 4.0.0 [epoll] Copyright (C) 2012 Will Glozer
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
-L --latency Print latency statistics
-U --u_latency Print uncorrected latency statistics
--timeout <T> Socket/request timeout
-B, --batch_latency Measure latency of whole
batches of pipelined ops
(as opposed to each op)
-v, --version Print version details
-R, --rate <T> work rate (throughput)
in requests/sec (total)
[Required Parameter]
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
Bước 2: Câu lệnh
Lệnh mẫu:
wrk2 -t2 -c10 -d30s -R100 --latency https://ten-mien-cua-ban.com/
Lệnh này duy trì tốc độ request cố định qua tham số R (ở trên là 100 rq/s) và nó sẽ thu thập thông tin độ trễ qua tham số --latency
–t2 : Có nghĩa là 2 luồng, đừng sử dụng nhiều hơn 2 nếu VPS cài wrk2 chỉ có 1 lõi.
–c10 : Nghĩa là có 10 kết nối đồng thời.
-d30s : Có nghĩa là bài kiểm tra sẽ được thực hiện trong vòng 30s.
https://ten-mien-cua-ban.com/ : Thay tên miền thực của bạn vào, nó có thể là một trang cụ thể chứ không nhất thiết phải là trang chủ, ví dụ trang cụ thể: https://ten-mien-cua-ban.com/sample-page/
Nếu là trang cụ thể, câu lệnh sẽ thành:
wrk2 -t2 -c10 -d30s -R100 --latency https://ten-mien-cua-ban.com/sample-page/
Ví dụ kết quả sau khi chạy lệnh:
Running 30s test @ https://freehost.page/sample-page/
2 threads and 10 connections
Thread calibration: mean lat.: 50.561ms, rate sampling interval: 97ms
Thread calibration: mean lat.: 50.560ms, rate sampling interval: 97ms
Thread Stats Avg Stdev Max +/- Stdev
Latency 49.40ms 12.86ms 197.89ms 98.35%
Req/Sec 49.93 4.62 62.00 80.34%
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 47.90ms
75.000% 48.26ms
90.000% 48.61ms
99.000% 95.61ms
99.900% 196.86ms
99.990% 198.01ms
99.999% 198.01ms
100.000% 198.01ms
Detailed Percentile spectrum:
Value Percentile TotalCount 1/(1-Percentile)
46.559 0.000000 1 1.00
47.199 0.100000 223 1.11
47.423 0.200000 424 1.25
47.615 0.300000 649 1.43
47.743 0.400000 816 1.67
47.903 0.500000 1046 2.00
47.967 0.550000 1137 2.22
48.031 0.600000 1235 2.50
48.095 0.650000 1316 2.86
48.191 0.700000 1442 3.33
48.255 0.750000 1505 4.00
48.319 0.775000 1578 4.44
48.351 0.800000 1612 5.00
48.415 0.825000 1672 5.71
48.447 0.850000 1702 6.67
48.511 0.875000 1751 8.00
48.575 0.887500 1794 8.89
48.607 0.900000 1816 10.00
48.639 0.912500 1838 11.43
48.703 0.925000 1858 13.33
48.767 0.937500 1875 16.00
48.831 0.943750 1889 17.78
48.927 0.950000 1902 20.00
49.119 0.956250 1913 22.86
49.279 0.962500 1926 26.67
49.855 0.968750 1938 32.00
50.111 0.971875 1944 35.56
51.007 0.975000 1950 40.00
52.927 0.978125 1957 45.71
57.215 0.981250 1963 53.33
75.775 0.984375 1969 64.00
89.919 0.985938 1972 71.11
90.559 0.987500 1975 80.00
91.263 0.989062 1979 91.43
142.975 0.990625 1982 106.67
143.615 0.992188 1985 128.00
143.743 0.992969 1986 142.22
144.127 0.993750 1989 160.00
148.095 0.994531 1990 182.86
195.583 0.995313 1991 213.33
196.351 0.996094 1993 256.00
196.351 0.996484 1993 284.44
196.479 0.996875 1995 320.00
196.479 0.997266 1995 365.71
196.607 0.997656 1997 426.67
196.607 0.998047 1997 512.00
196.607 0.998242 1997 568.89
196.607 0.998437 1997 640.00
196.863 0.998633 1998 731.43
196.863 0.998828 1998 853.33
196.991 0.999023 1999 1024.00
196.991 0.999121 1999 1137.78
196.991 0.999219 1999 1280.00
196.991 0.999316 1999 1462.86
196.991 0.999414 1999 1706.67
198.015 0.999512 2000 2048.00
198.015 1.000000 2000 inf
#[Mean = 49.404, StdDeviation = 12.858]
#[Max = 197.888, Total count = 2000]
#[Buckets = 27, SubBuckets = 2048]
----------------------------------------------------------
3000 requests in 30.03s, 142.60MB read
Requests/sec: 99.91
Transfer/sec: 4.75MB
–
Cách đọc kết quả:
Bạn cần chú ý nhất đến các thông tin dưới đây. Ví dụ ở bảng trên:
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 47.90ms
75.000% 48.26ms
90.000% 48.61ms
99.000% 95.61ms
99.900% 196.86ms
99.990% 198.01ms
99.999% 198.01ms
100.000% 198.01ms
Nghĩa là 50% request được phản hồi từ 47,90ms đổ xuống, 90% request được phản hồi từ 48,61ms đổ xuống, ở mốc 99% request, nhóm này phản hồi trong khoảng 95,61ms đổ xuống, đây là tốc độ phản hồi rất tốt với một website.
Bảng này tập trung vào các phân vị chính (50, 75, 90, 99,…), còn nếu muốn chi tiết hơn bạn xem bảng to ngay bên dưới. Lưu ký là kết quả thống kê không dựa vào toàn bộ mẫu mà chỉ lấy một phần mẫu (trong trường hợp này là 2000 rq trên tổng số 3000 rq).
Ghi chú: Trong thống kê, để đảm bảo kết quả chính xác nhưng không phải quá vất vả trong tính toán người ta thường lấy mẫu một số lượng nhất định trong toàn bộ nhóm. Việc lấy thống kê toàn bộ nhóm thì chắc chắn là chính xác nhất về lý thuyết, nhưng trong nhiều trường hợp là bất khả thi (ví dụ để tính toán chiều cao, cân nặng trung bình của người trưởng thành ở Việt Nam, người ta sẽ lấy mẫu một nhóm nhất định, với quy trình hợp lý, ví dụ 10 ngàn người, chứ không thể đo toàn bộ quần thể).
Thông tin cuối cùng:
3000 requests in 30.03s, 142.60MB read
Requests/sec: 99.91
Transfer/sec: 4.75MB
Cho thấy cả 3000 request đã trả lời thành công, chúng được hoàn thành trong 30s, với data lưu chuyển khoảng 142,6 MB, tốc độ rq đúng như yêu cầu ~100 rq, tốc độ vận chuyển dữ liệu là 4,75 MB/s.
Thử tăng tải
1. t2 -c20 -d30s -R200
Kết quả trên đang cho thấy máy chủ web của tôi đang tải rất tốt, bây giờ tôi sẽ thử tăng tải cho nó xem kết quả sẽ thế nào.
wrk2 -t2 -c20 -d30s -R200 --latency https://ten-mien-cua-ban.com/sample-page/
Kết quả:
Running 30s test @ https://freehost.page/sample-page/
2 threads and 20 connections
Thread calibration: mean lat.: 99.069ms, rate sampling interval: 548ms
Thread calibration: mean lat.: 95.917ms, rate sampling interval: 465ms
Thread Stats Avg Stdev Max +/- Stdev
Latency 49.64ms 14.11ms 203.01ms 98.12%
Req/Sec 99.81 5.97 109.00 61.54%
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 47.78ms
75.000% 48.22ms
90.000% 48.64ms
99.000% 143.74ms
99.900% 198.27ms
99.990% 203.13ms
99.999% 203.13ms
100.000% 203.13ms
Detailed Percentile spectrum:
Value Percentile TotalCount 1/(1-Percentile)
46.559 0.000000 1 1.00
47.231 0.100000 457 1.11
47.391 0.200000 811 1.25
47.551 0.300000 1308 1.43
47.647 0.400000 1625 1.67
47.775 0.500000 2005 2.00
47.871 0.550000 2265 2.22
47.967 0.600000 2458 2.50
48.031 0.650000 2600 2.86
48.127 0.700000 2828 3.33
48.223 0.750000 3027 4.00
48.255 0.775000 3099 4.44
48.319 0.800000 3226 5.00
48.383 0.825000 3323 5.71
48.447 0.850000 3405 6.67
48.543 0.875000 3516 8.00
48.575 0.887500 3551 8.89
48.639 0.900000 3600 10.00
48.735 0.912500 3651 11.43
48.831 0.925000 3703 13.33
48.927 0.937500 3751 16.00
49.023 0.943750 3774 17.78
49.119 0.950000 3798 20.00
49.279 0.956250 3827 22.86
49.503 0.962500 3849 26.67
50.143 0.968750 3873 32.00
50.495 0.971875 3885 35.56
51.231 0.975000 3900 40.00
54.431 0.978125 3910 45.71
69.503 0.981250 3923 53.33
90.879 0.984375 3935 64.00
91.199 0.985938 3941 71.11
94.719 0.987500 3948 80.00
143.103 0.989062 3954 91.43
143.871 0.990625 3960 106.67
144.383 0.992188 3968 128.00
145.023 0.992969 3969 142.22
150.271 0.993750 3973 160.00
195.839 0.994531 3977 182.86
196.095 0.995313 3979 213.33
196.607 0.996094 3982 256.00
196.735 0.996484 3983 284.44
196.991 0.996875 3988 320.00
196.991 0.997266 3988 365.71
196.991 0.997656 3988 426.67
197.247 0.998047 3991 512.00
197.247 0.998242 3991 568.89
197.247 0.998437 3991 640.00
197.375 0.998633 3992 731.43
198.271 0.998828 3993 853.33
198.399 0.999023 3994 1024.00
198.399 0.999121 3994 1137.78
198.399 0.999219 3994 1280.00
198.783 0.999316 3995 1462.86
198.783 0.999414 3995 1706.67
200.447 0.999512 3996 2048.00
200.447 0.999561 3996 2275.56
200.447 0.999609 3996 2560.00
200.447 0.999658 3996 2925.71
200.447 0.999707 3996 3413.33
203.135 0.999756 3997 4096.00
203.135 1.000000 3997 inf
#[Mean = 49.637, StdDeviation = 14.107]
#[Max = 203.008, Total count = 3997]
#[Buckets = 27, SubBuckets = 2048]
----------------------------------------------------------
6001 requests in 30.05s, 285.36MB read
Requests/sec: 199.70
Transfer/sec: 9.50MB
Hãy xem bảng thống kê ngắn:
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 47.78ms
75.000% 48.22ms
90.000% 48.64ms
99.000% 143.74ms
99.900% 198.27ms
99.990% 203.13ms
99.999% 203.13ms
100.000% 203.13ms
Nó cho thấy ở phân vị 90% vẫn phản hồi rất ổn, đến phân vị 99% chậm hơn đáng kể (nhưng so với mặt bằng chung trong thế giới web thì vẫn ổn).
Quan sát bảng lớn thì đến phân vị 98,7% nó vẫn có thời gian phản hồi dưới 100ms, rồi sau đó mới đột ngột tăng lên.
Nhưng nó vẫn đang phản hồi tốt, tôi sẽ tăng thêm nữa.
2. t2 -c50 -d30s -R500
Tăng gấp 2,5 lần so với lần kiểm thử bên trên:
wrk2 -t2 -c50 -d30s -R500 --latency https://ten-mien-cua-ban.com/sample-page/
Kết quả:
Running 30s test @ https://freehost.page/sample-page/
2 threads and 50 connections
Thread calibration: mean lat.: 64.657ms, rate sampling interval: 109ms
Thread calibration: mean lat.: 63.576ms, rate sampling interval: 107ms
Thread Stats Avg Stdev Max +/- Stdev
Latency 53.38ms 15.92ms 225.15ms 97.83%
Req/Sec 250.66 11.07 292.00 77.11%
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 51.33ms
75.000% 52.42ms
90.000% 53.79ms
99.000% 151.93ms
99.900% 219.52ms
99.990% 225.02ms
99.999% 225.28ms
100.000% 225.28ms
Detailed Percentile spectrum:
Value Percentile TotalCount 1/(1-Percentile)
46.687 0.000000 1 1.00
48.447 0.100000 1018 1.11
50.015 0.200000 2006 1.25
50.591 0.300000 3009 1.43
50.943 0.400000 3981 1.67
51.327 0.500000 5018 2.00
51.519 0.550000 5509 2.22
51.743 0.600000 6016 2.50
51.935 0.650000 6470 2.86
52.159 0.700000 6983 3.33
52.415 0.750000 7485 4.00
52.543 0.775000 7722 4.44
52.703 0.800000 7955 5.00
52.895 0.825000 8209 5.71
53.119 0.850000 8475 6.67
53.375 0.875000 8700 8.00
53.567 0.887500 8827 8.89
53.791 0.900000 8959 10.00
54.079 0.912500 9084 11.43
54.367 0.925000 9193 13.33
54.847 0.937500 9324 16.00
55.167 0.943750 9381 17.78
55.615 0.950000 9445 20.00
56.383 0.956250 9507 22.86
57.279 0.962500 9567 26.67
58.975 0.968750 9628 32.00
60.063 0.971875 9660 35.56
62.271 0.975000 9690 40.00
69.119 0.978125 9721 45.71
75.711 0.981250 9752 53.33
117.439 0.984375 9783 64.00
119.935 0.985938 9799 71.11
124.223 0.987500 9814 80.00
148.351 0.989062 9830 91.43
167.423 0.990625 9848 106.67
169.343 0.992188 9861 128.00
170.751 0.992969 9869 142.22
173.695 0.993750 9876 160.00
198.143 0.994531 9884 182.86
201.215 0.995313 9893 213.33
215.679 0.996094 9901 256.00
216.447 0.996484 9905 284.44
216.703 0.996875 9908 320.00
216.959 0.997266 9912 365.71
217.343 0.997656 9915 426.67
217.727 0.998047 9920 512.00
218.367 0.998242 9922 568.89
218.623 0.998437 9925 640.00
218.623 0.998633 9925 731.43
218.879 0.998828 9927 853.33
219.775 0.999023 9931 1024.00
219.775 0.999121 9931 1137.78
219.775 0.999219 9931 1280.00
220.671 0.999316 9932 1462.86
221.567 0.999414 9933 1706.67
221.951 0.999512 9934 2048.00
221.951 0.999561 9934 2275.56
223.487 0.999609 9935 2560.00
223.487 0.999658 9935 2925.71
223.999 0.999707 9936 3413.33
223.999 0.999756 9936 4096.00
223.999 0.999780 9936 4551.11
225.023 0.999805 9937 5120.00
225.023 0.999829 9937 5851.43
225.023 0.999854 9937 6826.67
225.023 0.999878 9937 8192.00
225.023 0.999890 9937 9102.22
225.279 0.999902 9938 10240.00
225.279 1.000000 9938 inf
#[Mean = 53.376, StdDeviation = 15.918]
#[Max = 225.152, Total count = 9938]
#[Buckets = 27, SubBuckets = 2048]
----------------------------------------------------------
14972 requests in 30.00s, 711.79MB read
Requests/sec: 499.00
Transfer/sec: 23.72MB
Phân tích bảng con:
50.000% 51.33ms
75.000% 52.42ms
90.000% 53.79ms
99.000% 151.93ms
99.900% 219.52ms
99.990% 225.02ms
99.999% 225.28ms
100.000% 225.28ms
Cho thấy kết quả vẫn rất tốt.
Từ bảng chính cho thấy cũng chỉ từ phân vị 98% thì thời gian phản hồi mới trên 100ms và không phản hồi nào quá 226ms. Đây là kết quả rất tốt với một VPS 6$ với cấu hình 1GB RAM.
3. t2 -c100 -d30s -R2000
2 ví dụ trên cho thấy kết quả vẫn tốt, tôi tăng thêm nữa, với cờ -c tăng gấp đôi & cờ -R tăng gấp 4.
wrk2 -t2 -c100 -d30s -R2000 --latency https://ten-mien-cua-ban.com/sample-page/
Nó thực sự gặp vấn đề quá tải khi hơn 50% rq cần hơn 6s để trả lời:
Running 30s test @ https://freehost.page/sample-page/
2 threads and 100 connections
Thread calibration: mean lat.: 2263.461ms, rate sampling interval: 6508ms
Thread calibration: mean lat.: 2304.842ms, rate sampling interval: 6578ms
Thread Stats Avg Stdev Max +/- Stdev
Latency 6.21s 1.57s 9.29s 57.31%
Req/Sec 727.00 9.17 736.00 83.33%
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 6.16s
75.000% 7.61s
90.000% 8.36s
99.000% 8.89s
99.900% 9.08s
99.990% 9.23s
99.999% 9.30s
100.000% 9.30s
Detailed Percentile spectrum:
Value Percentile TotalCount 1/(1-Percentile)
3377.151 0.000000 1 1.00
4104.191 0.100000 2876 1.11
4607.999 0.200000 5780 1.25
5074.943 0.300000 8643 1.43
5623.807 0.400000 11506 1.67
6164.479 0.500000 14387 2.00
6520.831 0.550000 15814 2.22
6811.647 0.600000 17258 2.50
7081.983 0.650000 18683 2.86
7348.223 0.700000 20119 3.33
7614.463 0.750000 21555 4.00
7741.439 0.775000 22283 4.44
7864.319 0.800000 22992 5.00
7987.199 0.825000 23726 5.71
8110.079 0.850000 24432 6.67
8232.959 0.875000 25150 8.00
8294.399 0.887500 25506 8.89
8355.839 0.900000 25867 10.00
8421.375 0.912500 26256 11.43
8478.719 0.925000 26584 13.33
8544.255 0.937500 26942 16.00
8577.023 0.943750 27136 17.78
8609.791 0.950000 27304 20.00
8642.559 0.956250 27501 22.86
8675.327 0.962500 27666 26.67
8716.287 0.968750 27863 32.00
8732.671 0.971875 27936 35.56
8757.247 0.975000 28022 40.00
8781.823 0.978125 28113 45.71
8806.399 0.981250 28197 53.33
8839.167 0.984375 28305 64.00
8847.359 0.985938 28331 71.11
8863.743 0.987500 28389 80.00
8880.127 0.989062 28434 91.43
8896.511 0.990625 28470 106.67
8912.895 0.992188 28509 128.00
8921.087 0.992969 28530 142.22
8937.471 0.993750 28561 160.00
8945.663 0.994531 28577 182.86
8962.047 0.995313 28600 213.33
8978.431 0.996094 28624 256.00
8986.623 0.996484 28635 284.44
9003.007 0.996875 28649 320.00
9011.199 0.997266 28656 365.71
9019.391 0.997656 28665 426.67
9035.775 0.998047 28678 512.00
9043.967 0.998242 28685 568.89
9052.159 0.998437 28690 640.00
9060.351 0.998633 28693 731.43
9076.735 0.998828 28702 853.33
9084.927 0.999023 28705 1024.00
9093.119 0.999121 28708 1137.78
9101.311 0.999219 28710 1280.00
9117.695 0.999316 28716 1462.86
9117.695 0.999414 28716 1706.67
9134.079 0.999512 28720 2048.00
9134.079 0.999561 28720 2275.56
9142.271 0.999609 28721 2560.00
9166.847 0.999658 28723 2925.71
9175.039 0.999707 28725 3413.33
9175.039 0.999756 28725 4096.00
9191.423 0.999780 28726 4551.11
9199.615 0.999805 28727 5120.00
9207.807 0.999829 28728 5851.43
9207.807 0.999854 28728 6826.67
9232.383 0.999878 28729 8192.00
9232.383 0.999890 28729 9102.22
9256.959 0.999902 28730 10240.00
9256.959 0.999915 28730 11702.86
9256.959 0.999927 28730 13653.33
9273.343 0.999939 28731 16384.00
9273.343 0.999945 28731 18204.44
9273.343 0.999951 28731 20480.00
9273.343 0.999957 28731 23405.71
9273.343 0.999963 28731 27306.67
9297.919 0.999969 28732 32768.00
9297.919 1.000000 28732 inf
#[Mean = 6214.110, StdDeviation = 1567.494]
#[Max = 9289.728, Total count = 28732]
#[Buckets = 27, SubBuckets = 2048]
----------------------------------------------------------
40275 requests in 30.01s, 1.87GB read
Requests/sec: 1342.23
Transfer/sec: 63.84MB
–
Tôi hạ xuống một nửa xem tình hình thế nào:
wrk2 -t2 -c50 -d30s -R1000 --latency https://ten-mien-cua-ban.com/sample-page/
Nó đã đỡ hơn nhiều, nhưng vẫn có dấu hiệu quá tải khi trên 50% rq cần hơn 2.75s để trả lời:
Running 30s test @ https://freehost.page/sample-page/
2 threads and 50 connections
Thread calibration: mean lat.: 958.856ms, rate sampling interval: 2897ms
Thread calibration: mean lat.: 1011.076ms, rate sampling interval: 2926ms
Thread Stats Avg Stdev Max +/- Stdev
Latency 2.76s 699.96ms 4.44s 58.97%
Req/Sec 440.08 3.93 447.00 66.67%
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 2.75s
75.000% 3.33s
90.000% 3.72s
99.000% 4.11s
99.900% 4.33s
99.990% 4.43s
99.999% 4.45s
100.000% 4.45s
Detailed Percentile spectrum:
Value Percentile TotalCount 1/(1-Percentile)
1393.663 0.000000 1 1.00
1810.431 0.100000 1748 1.11
2031.615 0.200000 3495 1.25
2279.423 0.300000 5243 1.43
2529.279 0.400000 6988 1.67
2754.559 0.500000 8743 2.00
2869.247 0.550000 9616 2.22
2994.175 0.600000 10479 2.50
3112.959 0.650000 11350 2.86
3233.791 0.700000 12238 3.33
3334.143 0.750000 13096 4.00
3393.535 0.775000 13540 4.44
3461.119 0.800000 13991 5.00
3518.463 0.825000 14406 5.71
3586.047 0.850000 14856 6.67
3651.583 0.875000 15279 8.00
3684.351 0.887500 15497 8.89
3715.071 0.900000 15724 10.00
3749.887 0.912500 15937 11.43
3784.703 0.925000 16160 13.33
3831.807 0.937500 16376 16.00
3852.287 0.943750 16480 17.78
3876.863 0.950000 16590 20.00
3901.439 0.956250 16703 22.86
3928.063 0.962500 16809 26.67
3958.783 0.968750 16919 32.00
3975.167 0.971875 16972 35.56
3995.647 0.975000 17028 40.00
4012.031 0.978125 17080 45.71
4036.607 0.981250 17135 53.33
4059.135 0.984375 17191 64.00
4069.375 0.985938 17219 71.11
4079.615 0.987500 17244 80.00
4095.999 0.989062 17273 91.43
4114.431 0.990625 17298 106.67
4134.911 0.992188 17326 128.00
4143.103 0.992969 17340 142.22
4153.343 0.993750 17354 160.00
4173.823 0.994531 17366 182.86
4182.015 0.995313 17381 213.33
4194.303 0.996094 17393 256.00
4206.591 0.996484 17402 284.44
4222.975 0.996875 17407 320.00
4235.263 0.997266 17414 365.71
4263.935 0.997656 17423 426.67
4268.031 0.998047 17427 512.00
4276.223 0.998242 17431 568.89
4288.511 0.998437 17435 640.00
4304.895 0.998633 17438 731.43
4321.279 0.998828 17443 853.33
4325.375 0.999023 17444 1024.00
4341.759 0.999121 17446 1137.78
4349.951 0.999219 17448 1280.00
4358.143 0.999316 17450 1462.86
4366.335 0.999414 17452 1706.67
4374.527 0.999512 17455 2048.00
4374.527 0.999561 17455 2275.56
4374.527 0.999609 17455 2560.00
4390.911 0.999658 17456 2925.71
4390.911 0.999707 17456 3413.33
4415.487 0.999756 17457 4096.00
4419.583 0.999780 17458 4551.11
4419.583 0.999805 17458 5120.00
4427.775 0.999829 17459 5851.43
4427.775 0.999854 17459 6826.67
4427.775 0.999878 17459 8192.00
4440.063 0.999890 17460 9102.22
4440.063 0.999902 17460 10240.00
4440.063 0.999915 17460 11702.86
4440.063 0.999927 17460 13653.33
4440.063 0.999939 17460 16384.00
4448.255 0.999945 17461 18204.44
4448.255 1.000000 17461 inf
#[Mean = 2761.354, StdDeviation = 699.961]
#[Max = 4444.160, Total count = 17461]
#[Buckets = 27, SubBuckets = 2048]
----------------------------------------------------------
25499 requests in 30.00s, 1.18GB read
Requests/sec: 849.98
Transfer/sec: 40.42MB
–
Tìm ngưỡng bắt đầu gặp vấn đề bằng cách hạ thêm
wrk2 -t2 -c50 -d30s -R700 --latency https://ten-mien-cua-ban.com/sample-page/
Có vẻ thiết lập này đã quá ngưỡng của nó một chút:
Running 30s test @ https://freehost.page/sample-page/
2 threads and 50 connections
Thread calibration: mean lat.: 65.864ms, rate sampling interval: 189ms
Thread calibration: mean lat.: 87.063ms, rate sampling interval: 411ms
Thread Stats Avg Stdev Max +/- Stdev
Latency 111.97ms 411.08ms 4.14s 98.24%
Req/Sec 349.42 22.20 420.00 77.12%
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 56.26ms
75.000% 60.54ms
90.000% 64.45ms
99.000% 3.01s
99.900% 4.06s
99.990% 4.14s
99.999% 4.14s
100.000% 4.14s
Detailed Percentile spectrum:
Value Percentile TotalCount 1/(1-Percentile)
46.559 0.000000 2 1.00
48.191 0.100000 1395 1.11
49.855 0.200000 2781 1.25
51.839 0.300000 4176 1.43
54.111 0.400000 5569 1.67
56.255 0.500000 6960 2.00
57.279 0.550000 7656 2.22
58.239 0.600000 8355 2.50
59.039 0.650000 9050 2.86
59.807 0.700000 9746 3.33
60.543 0.750000 10445 4.00
60.927 0.775000 10796 4.44
61.279 0.800000 11141 5.00
61.695 0.825000 11485 5.71
62.367 0.850000 11821 6.67
63.359 0.875000 12180 8.00
63.871 0.887500 12349 8.89
64.447 0.900000 12512 10.00
65.279 0.912500 12687 11.43
66.367 0.925000 12864 13.33
68.095 0.937500 13037 16.00
68.991 0.943750 13121 17.78
70.015 0.950000 13206 20.00
73.407 0.956250 13294 22.86
88.831 0.962500 13380 26.67
135.167 0.968750 13467 32.00
161.279 0.971875 13511 35.56
185.727 0.975000 13554 40.00
213.503 0.978125 13597 45.71
240.639 0.981250 13641 53.33
2273.279 0.984375 13684 64.00
2527.231 0.985938 13706 71.11
2740.223 0.987500 13728 80.00
2912.255 0.989062 13749 91.43
3084.287 0.990625 13771 106.67
3239.935 0.992188 13793 128.00
3315.711 0.992969 13804 142.22
3403.775 0.993750 13815 160.00
3483.647 0.994531 13825 182.86
3563.519 0.995313 13836 213.33
3624.959 0.996094 13847 256.00
3663.871 0.996484 13853 284.44
3874.815 0.996875 13858 320.00
3901.439 0.997266 13863 365.71
3946.495 0.997656 13869 426.67
3987.455 0.998047 13874 512.00
4014.079 0.998242 13877 568.89
4028.415 0.998437 13880 640.00
4042.751 0.998633 13882 731.43
4055.039 0.998828 13885 853.33
4069.375 0.999023 13888 1024.00
4081.663 0.999121 13889 1137.78
4095.999 0.999219 13891 1280.00
4100.095 0.999316 13892 1462.86
4112.383 0.999414 13893 1706.67
4118.527 0.999512 13895 2048.00
4118.527 0.999561 13895 2275.56
4120.575 0.999609 13896 2560.00
4124.671 0.999658 13897 2925.71
4124.671 0.999707 13897 3413.33
4128.767 0.999756 13898 4096.00
4128.767 0.999780 13898 4551.11
4132.863 0.999805 13899 5120.00
4132.863 0.999829 13899 5851.43
4132.863 0.999854 13899 6826.67
4136.959 0.999878 13900 8192.00
4136.959 0.999890 13900 9102.22
4136.959 0.999902 13900 10240.00
4136.959 0.999915 13900 11702.86
4136.959 0.999927 13900 13653.33
4143.103 0.999939 13901 16384.00
4143.103 1.000000 13901 inf
#[Mean = 111.966, StdDeviation = 411.075]
#[Max = 4141.056, Total count = 13901]
#[Buckets = 27, SubBuckets = 2048]
----------------------------------------------------------
20569 requests in 30.06s, 0.96GB read
Requests/sec: 684.36
Transfer/sec: 32.56MB
cờ -R là 500 vẫn cho phản hồi tốt, nhưng 700 là bắt đầu phản hồi rất chậm từ phân vị 98%, phản hồi chậm nhất lên tới 4s.
4. t2 -c50 -d90s -R500
Ở đây tôi lấy phản hồi vẫn ở ngưỡng tốt & đáp ứng được -R và -c cao của nó, nhưng tôi tăng thời gian lên (cờ -d) xem phản ứng thế nào?
wrk2 -t2 -c50 -d90s -R500 --latency https://ten-mien-cua-ban.com/sample-page/
Và nó xử lý rất tốt, khi trong ngường -R và -c, kéo dài thời gian ra không làm ảnh hưởng gì đến kết quả:
Running 2m test @ https://freehost.page/sample-page/
2 threads and 50 connections
Thread calibration: mean lat.: 64.642ms, rate sampling interval: 106ms
Thread calibration: mean lat.: 64.824ms, rate sampling interval: 105ms
Thread Stats Avg Stdev Max +/- Stdev
Latency 50.19ms 13.96ms 221.06ms 98.17%
Req/Sec 250.87 10.62 323.00 75.41%
Latency Distribution (HdrHistogram - Recorded Latency)
50.000% 48.35ms
75.000% 49.09ms
90.000% 49.98ms
99.000% 146.05ms
99.900% 201.21ms
99.990% 204.93ms
99.999% 221.18ms
100.000% 221.18ms
Detailed Percentile spectrum:
Value Percentile TotalCount 1/(1-Percentile)
42.111 0.000000 1 1.00
47.391 0.100000 4277 1.11
47.615 0.200000 8321 1.25
47.839 0.300000 12220 1.43
48.095 0.400000 16468 1.67
48.351 0.500000 20445 2.00
48.479 0.550000 22358 2.22
48.607 0.600000 24169 2.50
48.767 0.650000 26231 2.86
48.927 0.700000 28242 3.33
49.087 0.750000 29981 4.00
49.215 0.775000 31240 4.44
49.311 0.800000 32102 5.00
49.439 0.825000 33079 5.71
49.567 0.850000 33976 6.67
49.759 0.875000 34983 8.00
49.855 0.887500 35469 8.89
49.983 0.900000 35983 10.00
50.143 0.912500 36552 11.43
50.303 0.925000 37021 13.33
50.495 0.937500 37496 16.00
50.623 0.943750 37729 17.78
50.783 0.950000 37967 20.00
51.007 0.956250 38211 22.86
51.263 0.962500 38444 26.67
51.647 0.968750 38692 32.00
52.031 0.971875 38821 35.56
52.607 0.975000 38941 40.00
54.079 0.978125 39066 45.71
61.631 0.981250 39191 53.33
93.631 0.984375 39315 64.00
95.487 0.985938 39379 71.11
97.791 0.987500 39440 80.00
144.127 0.989062 39503 91.43
146.815 0.990625 39567 106.67
147.967 0.992188 39627 128.00
149.119 0.992969 39659 142.22
151.039 0.993750 39690 160.00
196.479 0.994531 39721 182.86
198.015 0.995313 39756 213.33
198.911 0.996094 39785 256.00
199.295 0.996484 39811 284.44
199.423 0.996875 39816 320.00
199.807 0.997266 39836 365.71
199.935 0.997656 39846 426.67
200.319 0.998047 39866 512.00
200.447 0.998242 39874 568.89
200.575 0.998437 39878 640.00
200.703 0.998633 39885 731.43
201.087 0.998828 39895 853.33
201.343 0.999023 39901 1024.00
201.471 0.999121 39905 1137.78
201.727 0.999219 39909 1280.00
201.855 0.999316 39912 1462.86
202.367 0.999414 39918 1706.67
202.623 0.999512 39920 2048.00
202.879 0.999561 39922 2275.56
203.007 0.999609 39924 2560.00
203.135 0.999658 39926 2925.71
203.519 0.999707 39928 3413.33
203.647 0.999756 39930 4096.00
203.903 0.999780 39931 4551.11
204.543 0.999805 39932 5120.00
204.799 0.999829 39933 5851.43
204.927 0.999854 39935 6826.67
204.927 0.999878 39935 8192.00
204.927 0.999890 39935 9102.22
205.311 0.999902 39936 10240.00
205.311 0.999915 39936 11702.86
208.511 0.999927 39937 13653.33
208.511 0.999939 39937 16384.00
208.511 0.999945 39937 18204.44
212.479 0.999951 39938 20480.00
212.479 0.999957 39938 23405.71
212.479 0.999963 39938 27306.67
212.479 0.999969 39938 32768.00
212.479 0.999973 39938 36408.89
221.183 0.999976 39939 40960.00
221.183 1.000000 39939 inf
#[Mean = 50.190, StdDeviation = 13.958]
#[Max = 221.056, Total count = 39939]
#[Buckets = 27, SubBuckets = 2048]
----------------------------------------------------------
44973 requests in 1.50m, 2.09GB read
Requests/sec: 499.68
Transfer/sec: 23.75MB
