gpt4 book ai didi

javascript - 在本地运行SLS函数以进行单元测试,结果是 Node Mysql连接池“连接过多”

转载 作者:行者123 更新时间:2023-11-29 16:54:55 25 4
gpt4 key购买 nike

我对Serverless相对较新,并且一直在本地运行我的函数以用于Jest单元测试。使用Node-Mysql,我通过调用mysql.createPool创建一个连接池,然后在需要进行查询时再调用pool.query。我正在假设pool.query实际上是调用pool.getConnection,connection.query以及最后是connection.release的快捷方式。因此,一旦它们完成了查询处理,连接就可以再次使用。

我遇到的问题是当我运行单元测试时,它们都第一次运行,但是如果第二次运行,则由于“错误:ER_CON_COUNT_ERROR:连接过多”而失败。

当函数托管在AWS Lambda中时,不会出现相同的问题。

是否有人经历过类似的事情,或者有人有任何建议的解决方法来缓解此问题,这仅是本地问题?

最佳答案

您需要调用pool.end来关闭所有池连接。否则,连接将一直打开,直到MySql服务器关闭它们为止。

从节点mysql readme


  使用完池后,您必须结束所有连接,否则Node.js事件循环将保持活动状态,直到MySQL服务器关闭连接为止。


在生产中可能不会发生这种情况,因为AWS Lambda尝试重用执行环境,因此在实践中只有少数执行会创建新池并打开新连接。

关于javascript - 在本地运行SLS函数以进行单元测试,结果是 Node Mysql连接池“连接过多”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52612741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com