mysql慢查询sql故障排查
最近项目后台管理系统出现问题,页面刷新没有数据,记录一下排查和解决的过程。
一、现象
1、后台页面没有数据,刷新也不起作用。
2、查看浏览器页面接口返回消息,后台接口报错500。初步定为应该后台接口出了问题。
3、检查后台服务,hystrix报time out,应该相关服务超时。
二、问题分析
1、查看被调用的服务,没有报错,但是log没有继续打印,最后执行完几条sql后就卡住了,初步估计是运行太慢导致的问题。
2、服务没有问题,就得看看数据库是否出问题了,执行 #show processlist 查看mysql正在运行的sql线程。发现有部分sql语句卡住,状态一直是Sending data,没有变过。这是导致mysql运行慢的问题了
3、查看mysql慢查询日志,发现有部分sql执行效率太低,query time超过了10秒(相当慢的查询,数据库工程师背锅)。和上面卡住的sql语句一比对,发现正是这部分sql,那问题是找到了。
三、解决
1、explain分析sql,查看是否使用索引;
2、优化sql,查询时间要小于2s;
3、加大mysql缓存