Node.js 中 async/await 与数据库连接池的隐蔽冲突:一次排查记录
线上一个用 Node.js + mysql2 写的服务偶尔出现请求卡死,日志里没有任何错误,但接口响应时间飙升到十几秒后超时。本地压测也复现了:并发量一上去,连接池的 getConnection 调用就开始排队,最终触发 PROTOCOL_SEQUENCE_TIMEOUT。排查后发现是 async/await 的写法把连接池的释放时机推迟到了微任务队列的尾部,导致在高并发下连接被占满。这篇文章从实际代码出发,说明这个问题的触发链条、为什么容易在 async 函数里踩坑,以及如何用更稳妥的方式管理连接生命周期...