GO:使用WRK对web系统做性能测试

tech2023-08-21  101

负载测试、压力测试、性能测试

负载测试:测试不同负载下系统的响应时间、数据吞吐量、系统占用资源等(CPU、内存),以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。 压力测试:最大负载的负载测试,目标是为了发现系统的最大负载。 性能测试:希望获得不同情况下的系统性能指标,可能是是在同样负载情况下改变系统的结构、改变算法、改变硬件配置等等来得到性能指标数据。例如web系统中的3/5/10原则。

wrk做性能测试

安装wrk(Mac)

brew install wrk

使用方式

使用方法: wrk <选项> <被测HTTP服务的URL> Options: -c, --connections <N> 跟服务器建立并保持的TCP连接数量 -d, --duration <T> 压测时间 -t, --threads <N> 使用多少个线程进行压测 -s, --script <S> 指定Lua脚本路径 -H, --header <H> 为每一个HTTP请求添加HTTP头 --latency 在压测结束后,打印延迟统计信息 --timeout <T> 超时时间 -v, --version 打印正在使用的wrk的详细版本信息 <N>代表数字参数,支持国际单位 (1k, 1M, 1G) <T>代表时间参数,支持时间单位 (2s, 2m, 2h)

示例

wrk -t15 -c1500 -d1m --latency http://10.227.xx.xx:8080 # 模拟15个线程,1500个连接,测试持续时间为1分钟 结果: Running 1m test @ http://10.227.xx.xx:8080 #测试1分钟 15 threads and 1500 connections # 15个线程,1500个连接 Thread Stats Avg Stdev Max +/- Stdev (平均值) (标准差) (最大值) (平均值正负一个标准差的比例) Latency 93.38ms 24.82ms 566.24ms 86.45% (延时) Req/Sec 169.89 80.30 495.00 66.85% (正在处理的请求数) Latency Distribution (时延分布) 50% 90.17ms 75% 101.95ms 90% 114.75ms 99% 200.56ms 151466 requests in 1.00m, 108.47MB read (1分钟处理了151466个请求,读取了108.47MB的数据) Socket errors: connect 1262, read 0, write 0, timeout 0 Requests/sec: 2520.29 (每秒处理2520.29个请求) Transfer/sec: 1.80MB (每秒读取1.8MB的数据)
最新回复(0)