[英]Getting mysql:“Too many connections ” despite using createPool in nodeJs
我正在使用Observables在angular2 +应用程序中显示实时数据,并且后端是使用MySQL数据库的NodeJs编写的。 由于我使用的是Observables,因此我需要数以千万计的mysql连接以保持实时工作的进行。 但是不可能获得那么多连接。 因此,我使用了从连接池中创建连接的池。 但是,我无法实现它。 我仍然收到错误:
错误:ER_CON_COUNT_ERROR:连接过多”
请帮助我关闭我的连接,以确保连接数不被超过。
前端代码
angular.component.ts
Observable.interval(10000).subscribe(x => {
this.viewData(Val);
// more functions
console.log(" Observable")
});
nodeJS代码
dashboard.service.js
function viewData(data) {
var sqlQuery = `
select * from TRANSACTION_PAYLOAD where INTERFACE_NAME = 'Highmark' AND (STATUS ='SUCCESS_RESPONSE')`
var deferred = Q.defer();
console.log("INSIDE NODE JS SERVICE");
var host = config.host;
var user = config.user;
var password = config.password;
var database = config.database;
var con = mysql.createPool({
host: host,
user: user,
password: password,
database: database
});
con.getConnection(function (err) {
console.log("Inside .getConnection ")
if (err) deferred.reject(err.name + ': ' + err.message);
con.query(sqlQuery,
function (err, result, fields) {
if (err) deferred.reject(err.name + ': ' + err.message);
console.log(result);
deferred.resolve(result);
});
});
return deferred.promise;
con.close();
}
您正在为每个请求创建mysql池。 您应该具有单个连接池。
连接池自动管理与mysql服务器的连接。
您需要从功能中删除连接池初始化。
将连接拔出
const mysqlConOptions = {
host: host,
user: user,
password: password,
database: database
};
var conPool = mysql.createPool(mysqlConOptions);
在您的功能内
conn = await conPool.getConnection();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.