CNode

node操作MySQL出现 ER_LOCK_WAIT_TIMEOUT 问题

问答
Iim-here发布于9 年前最后回复9 年前6 回复8114 浏览0 收藏

操作MySQL用的 node-mysql

今早起来收到报告说用户无法登陆。我上服务器看了下进程是正常的,于是访问了下首页发现也没问题(首页就是一个静态页面,和数据库没交互) 于是我就尝试登陆下,发现确实无法登陆,点了登陆按钮后一直loading,最后timeout。

查了下日志,发现连续报了2同样的错:Error: ER_LOCK_WAIT_TIMEOUT: Lock wait timeout exceeded; try restarting transaction 这个错之后紧接着有3个连续的:Error: Handshake inactivity timeout

根据记录查询了下发现自从报了这错之后就再也没用户登陆了(应该就是这个错导致的了)

然后我接着连上数据库 SHOW PROCESSLIST,发现进程都正常

不知道从何下手,然后我重启了一下node进程就正常了

为什么出了死锁后会导致所有操作数据库的进程一直卡住啊?

这个业务线上跑了很久,第一次遇到这个问题。

查看回复

回复 (6)

L
lanyanai#1·9 年前

我也遇到这样的问题了,求指点

M
magicdawn#2·9 年前

看 information schema库的 innodb locks lockwait trx 表,找出长时间占用锁的SQL 优化

I
ipengyo#3·9 年前

楼主查到问题了吗!~

I
im-here#4·9 年前

@ipengyo @lanyanai 没。。。 就出现过那一次,到目前为止再没重现过。 你们也遇到同样的问题了?

N
NeroCho#5·9 年前

ER_LOCK_WAIT_TIMEOUT 这个错误提示已经很明显了,搞不明白建议你还是用mongo吧

I
ipengyo#6·9 年前

死锁了 是不是多开了不同的连接 在操作同一张表啊··

参与回复
登录后即可参与回复。登录