数据库

Mysql Lock wait timeout 锁等待坑

By karp 1104 Views 2 MIN READ 0 Comments

问题复盘 :

 客户端服务A -> 中转服务B -> 终端服务C.
  1. 服务A 请求 服务B (超时 6秒) 没有拿到回包数据 , 连续请求8次 耗时48秒
  2. 服务B 请求 服务C (无超时) nginx 日志查出 有8条请求超时 分别为 50秒 43秒 37秒 ...
  3. 服务C 存在Mysql 锁等待, 原因在于 http服务 和 cli脚本服务 同时操作同一条数据 锁等待默认50秒超时.

一. 发生问题 锁等待时间太久 导致重复请求

解 : 锁等待问题 缩短调整锁等待超时时间30秒, 调大超时请求时间至15秒

二. 锁等待超时后 拿数据方法返回null 导致脏读问题

解 : 判断返回值null 抛出异常防止脏读问题

本文由 karp 原创

采用 CC BY-NC-SA 4.0 协议进行许可

转载请注明出处:https://www.ikarp.top/index.php/archives/555.html

标签: mysql

0 评论