负载测试、压力测试、性能测试
负载测试:测试不同负载下系统的响应时间、数据吞吐量、系统占用资源等(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的数据)