一、发现问题
最近在做的事情使用 Node 的 mysql 模块来连接 mysql,跑了有一段时间了,最近捣鼓得比较少,突然收到反馈,应用登录不上了!!!
二、定位问题
查日志,无果...
Debug 模式启动,问题消失...
隔天登录,问题重现...
这里需要检讨下了,全链路日志缺失啊!!!
于是在问题重现的情况下,保持后台不动,到前端 Debug,发现接口报了一个 sql 异常,这才找寻到蛛丝马迹,定是数据库这块有问题了...
然而重启即好,应该不是具体的语句出了岔子,考虑到一直只在用一个连接
const connection = mysql.createConnection(config);
connection.connect();
从未释放,不会是连接使用一段时间卡死了吧,随便谷了一个哥,还真特么的有这一回事哈。于是整个连接池,问题立解:
conn = mysql.createPool(config);
conn.query()
再次检讨,想当年用 hibernate 连数据库溜得飞起,连接池这么基础的概念,在用 node 之后,竟无视了...