跳到主要内容
版本:v3&v6

MySQL死锁导致服务异常

故障表现

用户反馈ONES页面响应越来约慢、很快就无法打开。project-api等日志报错如下:

insert or update access time is error:<SQLError> Error 1205: Lock wait timeout exceeded; try restarting transaction

故障根因

MySQL中出现锁表或长时间等待的事务线程,导致业务异常。

解决方案

手工杀掉引起死锁的会话,快速恢复业务。

# 先登录数据库

# 查看进程​​
SHOW FULL PROCESSLIST;

# 检测是否有会话状态为Waiting for query cache lock,如果是,证实为存在死锁

# 如下方式,找到非sleep、且长时间响应异常的会话
SELECT CONCAT('KILL ', ID, ';') AS kill_command
FROM information_schema.PROCESSLIST
WHERE COMMAND != 'Sleep' AND TIME > 60;

# 将上述结果复制执行