1.准备
监控跑起来,下一步发压力
检查一下服务netstat -lntps | grep 8096
用到的示例端口8096
发请求
5个线程,每20s加一个,就是100,加完后再跑30s,就是130s
linux下运行
这里可以看到tps很低
输入top命令按1
此处可以看到usr的cpu很高
此处可以看到mysql进程占用cpu高(因为这台服务器部署了应用和数据库)
跑压测后根据收集到的数据进行深入监控
2.深入监控
首先查看慢查询日志
第一步:查看慢查询日志
①如果rm -f 删除了slow.log文件,需要重启应用和mysql服务,然后才会重新生成slow.log文件
②查看prometheus可视化监控
③tail -f /mysql/logs/slow.log查看慢查询日志
此处记录了超过设置阈值的慢sql语句
tail -f /mysql/logs/slow.log
④查看慢查询日志后的指标解释
第一行就是慢sql的执行时间
下面是用户名、主机
第三行是sql消耗的时间
lock time是sql锁表的时间
rows_sent:表示返回多少行数据(此处的sql是根据唯一id进行查询,返回的数据肯定是一行)
rows_examined:扫描多少行才获取数据结果
query_time:30多秒,查询耗时30多秒,性能很差
通过慢查询日志去看比较难,一般都是用mysqldumpslow
第二步:mysqldumpslow
mysqldumpslow在mysql的bin目录下
①帮助mysqldumpslow --help
罗列出很多参数
s按某种顺序进行排序
c就是count访问次数
t就是查询耗时
l是锁定时间
r是返回的记录数
②返回记录最多的10条
mysqldumpslow -s r -t 10 /mysql/logs/slow.log
③访问次数最多的10条
mysqldumpslow -s c -t 10 /mysql/logs/slow.log
④返回记录最多的、包含select的10条
mysqldumpslow -s r -t 10 -g 'select' /mysql/logs/slow.log
⑤执行结果含义
sql出现次数
sql执行时间
锁时间
结果返回行数
执行用户
执行的sql
通过慢日志获取到慢sql后就需要分析进一步分析sql、下一步看执行计划