wrk

WRK 的结果怎么看?

Latency:表示的是响应时间(需要在命令中添加 –latency),顺序分别是: 平均值,标准偏差,最大值,正负标准差;
其中,平均值,最大值,有一定参考意义,如果标准偏差越小,一定层面能反应待测的接口是比较稳定的

Req/Sec:表示的是每个线程每秒的完成的请求数,顺序分别是: 平均值,标准差,最大值,正负标准差;
参考价值与响应时间类似

链接数和线程数应该设多少?
先上结论:
-t(线程数):
一般是 CPU 核数,最大不要超过 CPUx2 核数,否则会带来额外的上下文切换,将线程数设置为 CPU 核数主要是为了 WRK 能最大化利用 CPU,使结果更准确
-c(连接数):
连接数(connection)可以理解为并发数,一般在测试过程中,这个值需要使用者不断向上调试,直至 QPS 达到一个临界点,便可认为此时的并发数为系统所能承受的最大并发量。
实际上,wrk 会为每个线程分配(c/t)个 socket 连接,每个连接会先执行请求动作,然后等待直到收到响应后才会再发送请求,这个日后会有关于 wrk 的源码解析方便理解,所以每个时间点的并发数大致等于连接数(connection)

连接数(c)与 QPS(q),请求响应时间毫秒(t)的关系大概可理解为:q = 1000/t * c
RTT 为 1ms,如果 c(连接数)为 1,则理论上 QPS 接近 1000,如果 c(连接数)为 100,则 QPS 接近 10w
RTT 为 10ms,如果 c(连接数)为 1,则理论上 QPS 接近 100,如果 c(连接数)为 100,则 QPS 接近 1w

但是服务有自己的负载极限,并发数不能无限放大,这就能解释有的时候连接数越大,反而 QPS 越低,是因为并发数已经设的过高,导致待测系统已经超出自身能承受的负载
https://testerhome.com/topics/22610