现象
最近刚接手的一个项目,在某天中午12点30多分接到开发反馈,他们业务请求数据库的时候,出现了大量请求超时问题,虽然之前也有过,但是这次持续很久,大概两分钟多又恢复好了。
数据库版本8.0.22。隔离级别RR。
初步分析
接到问题,不着急,先看一下监控:
从监控图上看可以看到在对应的12点36分左右的时候出现了连接数开始飙高,以及这个点出现了少量的慢sql.
查看的对应时间点的慢查询日志,查到对应时刻有如下的慢查询sql:
这里可以看到这个慢查询从12点36分执行了155s。
这个SQL按理说不会慢,因为(uid,msg_id)是一个uk索引,id是主键。
然后因为出现超时,所以猜测是因为锁导致的超时原因吗?
但是由于新项目没有很深层的关于锁相关监控,只能去查询存储引擎信息
Show engine innodb status\G; 这个只能看到最近一次的死锁信息。要想看到完整的死锁信息 建议打开innodb_print_all_deadlocks,该参数会将