LEN

Mysql 1205 ER_LOCK_WAIT_TIMEOUT 锁等待超时 踩坑
今天 很走运 又可以刷经验了. 数据库委托表 锁等待超时获取失败被动委托 导致主动单未处理就变成被动单 , 成交价...
扫描右侧二维码阅读全文
23
2019/04

Mysql 1205 ER_LOCK_WAIT_TIMEOUT 锁等待超时 踩坑

今天 很走运 又可以刷经验了. 数据库委托表 锁等待超时获取失败被动委托 导致主动单未处理就变成被动单 , 成交价差 过大 K线感人了...

1111.png

通过查询文件log, 发现读取委托记录失败, 程序没有容错 默认为空数组. 诶...
今天的线上资产服务权限, 读写锁等待超时 ... 下面为阿里云mysql 日志. 发现查询失败 错误码 1205 百度了一下 锁等待超时 ...

通过客户端连接IP, 找到产生大量锁问题的服务器, 预发布服务器上线新业务, 测试阶段代码问题 导致大量 for update 排他锁, 限制读写操作.
严重影响业务表 记录的读写操作. 关闭预发布服务问题得到解决.
预发布服务是业务底层服务, 使用 swoole 实现http服务, worker 进程常驻内存, 具体原因尚在定位中. 因为之前项目有参与, 推测原因:

事务失效, 开启事务后并未释放(commitrollback) 导致worker进程内mysql 单实例仍是事务进行中, 项目中存在读记录使用排它锁.

总结: 本次事故由于预发布记录使用排它锁事务不提交, 导致大量锁等待超时, 业务代码事务的一致性需要严格把关!!

Last modification:April 23rd, 2019 at 10:36 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment