ER_CON_COUNT_ERROR连接太多错误使用Knex

时间:2018-06-11 14:37:53

标签: mysql node.js database stress-testing

我正在尝试实现一个允许大量并发用户将数据插入数据库的Node.js应用程序。我正在使用Knex来处理数据库连接。我的目的是允许服务器异步处理来自百万用户的百万个请求。我正在使用MySQL NDB Cluster 7.5。目前我正在使用ab测试工具对应用程序进行压力测试,但我遇到了以下错误:

ab -p 100.json -T application/json -c 1000 -n 1000 http://34.242.xxx.xxx:3000/insert
Benchmarking 34.242.xxx.xxx (be patient)
apr_socket_recv: Connection reset by peer (104)

从服务器我发现以下错误:

Unhandled rejection Error: ER_CON_COUNT_ERROR: Too many connections
goofy_noyce.1.f7o2c2dp6sb8@ip-172-31-xxx-xxx 

这是我正在使用的代码:

const knex = require('knex')(require('../knexfile.js')

const insertData = function (tableName, timestamp, deviceId, data) {
  debug('insert');
  knex(tableName).insert({
timestamp,
deviceId,
data,
 })
.catch(err => debug(`error: ${err}`))
.then((dataid) => {
  debug(`Inserted with id: ${dataid}`);
    });
};

....

insertToDb(req.body.tableName, req.body.timestamp, req.body.deviceId, req.body.data);
res.status(201).json({ success: true });

这是knexfile:

const config = require('./config/config');

module.exports = {

production: {
client: 'mysql',
connection: {
  host: config.mysql_ip,
  database: config.mysql_database,
  user: config.mysql_user,
  password: config.mysql_pass,
},
pool: {
  min: 2,
  max: 10,
},
  },

};

0 个答案:

没有答案