记一次由 MySQL UPDATE 语句导致锁等待后引发的服务炸裂

MySQL UPDATE 语句导致锁等待后引发的服务宕机分析与优化方案

场景描述

接收到 P99 超时告警,定位到某接口导致,接口是由同事实现的,逻辑较简单,是一个 MySQL 的 INSERT OR UPDATE 逻辑, 一个请求过来,判断某个非主键字段是否存在,不存在则 INSERT 插入,存在则按该字段 UPDATE 更新其他字段。

超时告警在触发与恢复之间反复触发,平均耗时 6 秒,接口最近无改动,已上线一段时间运行正常。随后而来的是大面积的接口超时告警,情况开始变得紧急起来。

[阅读全文]