步骤1:观察业务应用日志
查阅应用的日志,观察日志的输出,从错误关键字中,捕捉细节。
如果出现文案:
ERROR 1040: Too many connections
则预示着数据库连接可能耗尽,导致无法进行业务。
如何排查mysql的链接是否被耗尽,参考此命令。
如果出现文案:
Deadlock found when trying to get lock; try restarting transaction
则预示着数据库可能发生死锁,从而导致执行SQL的程序陷入卡顿。
如何排查mysql中是否存在死锁,可以简单的查看Innodb的状态,LATEST DETECTED DEADLOCK ,具体命令和说明,查看此命令。
上述命令展示的是最近的死锁信息。想要查看当前所有的死锁信息,可以通过,performance_schema 库 和 INFORMATION_SCHEMA 库的进行查询,例如:
select * from performance_schema.data_locks;
select * from performance_schema.data_lock_waits;