操作 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 进程就正常了
为什么出了死锁后会导致所有操作数据库的进程一直卡住啊?
这个业务线上跑了很久,第一次遇到这个问题。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.