Hướng dẫn cài đặt & sử dụng wrk2 để benchmark website (thực hành)

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):

Benchmark của VPS

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 home
  • git clone https://github.com/giltene/wrk2.git : Tải mã nguồn
  • cd wrk2 : Di chuyển vào thư mục wrk2
  • make : 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

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