Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql节点连接太多_Mysql_Node.js_Runtime Error_Database Connection - Fatal编程技术网

mysql节点连接太多

mysql节点连接太多,mysql,node.js,runtime-error,database-connection,Mysql,Node.js,Runtime Error,Database Connection,我有一个API服务器,它对mysql数据库运行不同的API调用:这个文件完全处理连接和查询: const mysql=require('mysql') constpool=mysql.createPool({ 主机:sqlhost, 端口:sqlport, 用户:sqluser, 密码:sqlpsw, 数据库:sqldb, 字符集:“utf8mb4”, 连接限制:10 }) module.exports={ get:函数(sqlQuery,类型){ 返回新承诺((解决、拒绝)=>{ pool.g

我有一个API服务器,它对mysql数据库运行不同的API调用:这个文件完全处理连接和查询:

const mysql=require('mysql')
constpool=mysql.createPool({
主机:sqlhost,
端口:sqlport,
用户:sqluser,
密码:sqlpsw,
数据库:sqldb,
字符集:“utf8mb4”,
连接限制:10
})
module.exports={
get:函数(sqlQuery,类型){
返回新承诺((解决、拒绝)=>{
pool.getConnection((错误,连接)=>{
如果(错误)拒绝(新错误(505))
否则{
query(sqlQuery,函数(err,results){
connection.release()
如果(错误!==null)拒绝(新错误(503))
其他解决方案(结果)
})
}
})
})
}
}
过了一段时间,我发现
错误:ER\u CON\u COUNT\u错误:连接太多
。 我知道我可能使用了pool.query而不是flow pool.getConnection-->connection.query-->connection.release,但结果(我猜)是一样的


我不知道是什么导致了“连接泄漏”。有什么想法吗?谢谢

如果我能建议您使用knexJS,它可以非常好地工作(例如为您处理连接的发布)。不知道您的情况有什么问题,虽然它最终是一个数据库错误,但它受到了ddos攻击(不确定它是否是正确的攻击名称),所以我通过使用pool.query或pool.getConnection移动到另一个主机来解决它。getConnection实际上是一样的(我的意思是-pool.query在内部使用pool.getConnection,但在代码中看起来更好)。问题是-您的数据库有少量可用连接-您应该降低
connectionLimit
数量,直到应用程序正常工作(或者读取mysql服务器设置-应该有一个变量,说明一次可以激活多少连接)。请记住,mysql/mysql2保留尽可能多的连接(amd max==
connectionLimit
),但它不会在开始时打开它们,而是在需要时打开,直到使用限制为止