【技术背景】
度量MySQL性能重要的两个指标:响应时间(Response Time)和吞吐量(Throughput)。 而在查询性能优化时,主要参考MySQL整体的Query Response Time。
此文简单说明常用采集MySQL响应时间的两个方式:tcprstat和Percona Server内置的响应时间采集功能。(本文Query指所有MySQL的命令)
【技术细节】
一 tcpstat的使用
1、tcprstat安装
1)下载tcprstat:
2) 把tcprstat-static.v0.3.1.x86_64放在PATH指定的目录下, 我把它放在/usr/bin/
3)重命名tcprstat-static.v0.3.1.x86_64为tcprstat, 并chmod u+x /usr/bin/tcpstat
2、使用说明:tcprstat两种使用方式:1)本机直接在线采集;2)分析tcpdump采集到的离线pcap文件
2.1 本机直接在线采集
参数:
-p :指定只采集此TCP port的请求
-t : 采集输出的时间间隔,默认为10
-n : 指定输出打印的次数,默认为1,只打印1次;如果指定为0表示无限次(ctr+c终止)
示例一:指定MySQL的port如3306, 时间间隔1S, 输出打印次数10
tcprstat -p $port -t 1 -n 10
2.2 输出字段解读(只说重要的)
1) count : 此间隔内处理完成的请求数量 ,第一行 表示1秒内处理完成610个MySQL请求
2)95%_avg: 此间隔内,95%的的请求量的平均响应时间,单位微妙(1/10^6秒); 主要参考此列值,相当于评分去掉2.5%的“最高延迟”, 2.5%的“最低延迟”
所以此值比较能体现MySQL Server的查询平均响应时间值。 第一行此值:328, 表示95%查询平均响应时间为328毫秒
3)max: 此间隔内所有完成的请求, 响应时间最大值,单位毫秒
4)min: 此间隔内所有完成的请求,响应时间的最小值
5)avg: 此间隔内所有完成的请求, 响应时间的平均值
2.3 分析tcpdump采集的pcap file.
有时通过tcpdump采集数据保存到文件, 使用tcprstat对此文件进行RT的分析,这种情况往往数据文件是其他机器的,所以要使用tcprstat另外两参数:-l 和-r
-l : 指定要分析的主机IP,如果多个可以使用逗号隔开。
-r : 指定使用tcpdump抓取的pacp文件 。
示例二:
1)使用tcpdump抓取数据包:
tcpdump -s 65535 -x -nn -q -tttt -i eth0 port $port -c 50000 -w tcpdump.pcap
2)使用tcprstat分析由tcpdump采集的数据包文件 。
tcprstat -l $IP -p $port -t 1 -r tcpdump.pcap
二 Percona Server内置的响应时间说明
1、 tcprstat目前由percona维护,后来直接把此功能集成在Percona Server内部了; 默认是关闭的,打开对性能有一定的影响。
5.5.8之前由enable_query_response_time_stats 参数设置, 5.5.8之后重命名为:enable_query_response_time_stats。参数为动态的,可随时打开和关闭。
参考:
2、设置步骤:
1)打开RT选项, set global query_response_time_stats=ON;
2)查看查询响应时间分布:show QUERY_RESPONSE_TIME; 结果值是不断累加的。
上图说明:
第一列: 表示Query Response Time的范围区间,单位秒, 如第二行的0.000010表示 从1微秒(us)到10微秒(us)的区间,
第二列:RT在表示第一列范围区间内的, SQL执行数量, 如第二行 1us--10us之间的有100737个Query
第三列:表示这个时间区间内,执行的时间总数,单位秒(s)
更细节的展示说明,请参考周董blog:
3、为了对比SSD对特定线上应用场景的性能提升,为HDD和SSD添加zabbix的Query Response Time的插件功能。
简单实现说明:
1)10S采集一次数据,算出10S内各个Query Response Time区间内的数量
2)设置一个Zabbix监控模板,把1)中采集数据推送给Zabbix Server.
下图为Zabbix监控主机的Query Response Time 1小时分布图
上图说明:
1)可见1h内,大部分(610个Query)的Response Time都在100微妙 到 1毫秒之间。
2)avg列值之和= Com_xxx + QC_hit
三、总结一下:
tcprstat主要偏向于:查看所有Query Reponse Time的值;而Percona内置功能此偏向于:每个Query Response Time区间内的Query个数。
【参考】
阅读(7360) | 评论(0) | 转发(0) |