1.3.响应时间
响应时间是指一条查询或者更新语句从发出请求到接收完数据的时间。
因为最大响应时间的不确定性和不可重复性,所以一般使用X%的查询响应时间作为指标。如果值为95%为10ms,意味着95%的查询会在10ms内返回。对于OLTP查询来说,在50ms内返回是比较理想的结果。超过200ms的查询可以视为慢查询。
此指标较难收集,采用tcprstat虽然可以,但是tcprstat本身有一定的负载,另外也只收集最高到99%的响应时间,如果想知道比如99.999%的平均、最大响应时间就需要修改源码了。
目前有2个思路收集此数据:
采用tcpdump+pt-query-digest,将tcpdump抽样数据发送到中心机上利用pt-query-digest进行分析,然后入库后显示。此方法也需要修改pt源码,因为原版的pt支持的粒度太粗了,如下图,100ms直接跳到了1s:
此方法的优点是可以显示不同语句的情况,缺点是如果抽样时间长,中心机分析不完,而抽样时间短又可能信息没有代表性。
另外一个更轻量级的方法是将慢查询日志阀值打到50ms甚至更低,然后统计慢查询时间的分布,可以按时间和服务器维度进行分析(使用pt工具也可以得到不同语句的响应时间分布)如下表所示:
4901 130421
dt num avg
—————————–
0 1839 605
1 920 596
2 1215 450
3 973 481
4 488 603
5 449 487
6 516 597
7 874 634
8 1129 532
9 1160 457
10 1115 502
11 987 529
12 1531 559
13 1185 537
14 2238 1235
15 1418 534
16 1589 535
17 951 548
18 1790 531
19 1520 503
20 1845 496
21 1855 542
22 1583 564
23 1840 562
None 31010 587
ip num ratio
—————————–
10.73.xx.xx 4418 14
10.75.xx.xx 121 0
10.75.xx.xx 7905 25
10.75.xx.xx 5706 18
10.75.xx.xx 6812 22
10.75.xx.xx 6048 20
None 31010 100
根据此结果可以发现慢查询在服务器之间分布并不均衡,这也是分析问题的很好的切入点。
可测量指标:
X%的查询/写入响应时间(ms)。