代码改变世界

linux统计qps、qpm、响应时间的命令

2017-05-16 20:21 by hduhans, ... 阅读, ... 评论, 收藏,  编辑

awk '{a[$4]++}END{for(i in a){print i" "a[i]}}' * |sort -nrk2

求qps
awk '{print $4}' prod* | cut -c12-19 | awk '{a[$1]++}END{for(i in a){print i" "a[i]}}' | sort -nrk2

求qpm
awk '{print $4}' prod* | cut -c12-16 | awk '{a[$1]++}END{for(i in a){print i" "a[i]}}' | sort -nrk2

第二列相加
grep 18:03: qps.txt | awk '{sum+=$2}END{print sum}'

求nginx响应时间平均值
grep 00:11:43 prod* | awk '{sum+=$13}END{print sum/NR}'

--------------------------------------------------------------------------------------------------------

数据与能力:数据表示系统运行情况,能力表示系统最大处理能力
最大能力通过压力测试得出
系统运行情况通过日常生产运行监控得出
系统并发有很多维度:并发连接数、并发用户数、并发请求数

并发数通常指并发连接数

1、qps:每秒查询率,每秒处理的查询请求数,常用来衡量系统能力
2、tps:每秒处理的事务,
说法一:一个页面从发起请求到响应算一个事务,每秒处理的页面请求数
说法二:某几步操作的集合,如一次登录过程,商品的一次支付过程看成事务
说法三:同qps,每秒处理的请求-响应数
3、吞吐率(Throughput):
说法一:(同qps)单位时间内服务器处理的请求数,单位“req/s”,用来描述其并发处理能力
说法二:单位时间内网络上传输的数据量,单位“字节数/秒”

吞吐量:在一次性能测试过程中网络上传输的数据量的总和
用吞吐量来衡量一个系统的输出能力是极其不准确的,需要看吞吐率

最大线程数的瓶颈(银行窗口,客户办理业务填写资料)

qps、并发数设置的合理值
柜台办理业务,每个人办理业务需要填写资料,最多排队数

运行数据
qps = 并发数 / 平均响应时间(s)


统计
--------------------------------------------------------------------------
awk '{print $4}' access.log
2017-05-03T00:04:20+08:00
2017-05-03T00:04:20+08:00
2017-05-03T00:04:20+08:00
2017-05-03T00:04:20+08:00
--------------------------------------------------------------------------
awk '{print $4}' access.log.8080 | cut -c12-19
00:16:24
00:16:24
00:16:24
00:16:24
--------------------------------------------------------------------------
awk '{print $4}' access.log.8080 | cut -c12-19 | sort | uniq -c
15 17:35:56
33 17:35:57
25 17:35:58
26 17:35:59
--------------------------------------------------------------------------
awk '{print $4}' access.log.8080 | cut -c12-19 | sort | uniq -c | sort -nr
142 00:05:21
125 07:32:41
118 10:24:43
118 00:10:29