node服务器不响应--mysql连接(整理)

  使用node.js搭建的服务器,发现使用一段时间后就不响应了,找了好久也没发现有啥问题,只能无奈的重启。

  某一天看到了在Node.js使用mysql模块时遇到的坑 这篇文章。仔细想想确实也只有在mysql这里出问题了,因为以前一直使用的是mongodb,没遇见过这个问题。

  于是,开始在网上找各种关于mysql连接自动释放的文章,结果都是很早以前的文章。

  我只能从数据库入手,查看数据库的连接数,当前总连接数22,而活跃的只有一个,坑了个爹的,因为我知道这个活跃的就是我mysql客户端的链接,于是麻溜的关了mysql客户端,果然剩21个链接,没有活跃的了。

  这个21可谓是意义重大啊,因为当前有两个项目链接该数据库,每个项目的最大链接数是10,剩下一个应该是某个同事的客户端,这说明了什么问题呢,说明了两个项目的连接数均达到了最大,而且一直未释放。

  赶紧麻溜重启项目证实一下,我点我点,点了十几下然而服务器依旧运行良好,于是乎,我再想想今天做了些什么操作,服务器不响应了呢,就是这创建文章,最主要的是这个创建文章使用链接池的方式跟做查询时是不一样的,就像mysql文档中所写,查询的时候我用了Use pool directly,即poll.query,而创建的时候用了pool.getConnection

  继续麻溜的重启服务器,创建10次文章,第11次哈哈哈哈,就是这货惹的祸(真庆幸当时没有把最大连接数设成100),其实mysql文档里写的也很清楚pool.getConnection拿到的connection在用完后应该用connection.release()释放,让它回到连接池里,以便其他地方使用。

  问题就是这么简单,没有仔细看文档!!!

对比: