步骤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;
当前,有更简单的方式,可以获取当前执行的SQL,查看此命令

当数据库接口出现不响应导致应用卡死时,可按照三个步骤进行排查:首先观察业务应用日志,查找如"Too many connections"或"Deadlock"等错误信息;其次查看MySQL错误日志,关注死锁和慢查询日志;最后,如果是Java应用,使用jstack分析线程栈。通过调整MySQL设置,检查死锁和慢查询日志,结合应用日志和线程状态,能有效定位问题所在。

466

被折叠的 条评论
为什么被折叠?



