节点JS-排序过多的连接-CPU使用率100%

时间:2020-09-29 11:58:38

标签: node.js sequelize.js cpu

我正在使用第三方Websocket连接。 Websocket发送数组长度为100+的数据。 因此,我必须将每条记录检入数据库表中以进行一些计算(必需)。

可能在此循环中,这会导致内存和CPU使用率过高。

我的数据库配置。

const sequelize = new Sequelize(DB_NAME, DB_USER, DB_PASSWORD, {
  dialect: 'mysql',
  host: DB_HOST,
  port: DB_PORT,
  logging: false,
  dialectOptions: {
//  useUTC: true
  },
  timezone: '+00:00', 
  pool: {
    max: 500,
    min: 0,
    idle: 10000,
    // @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
    acquire: 100*1000,
  }
}); 

一个循环代码:

for(const theOdd of records) {
  
  await odd_records.count() // First query
  await matches.findOne() //Second query
  .
  .
  .
 //End with 5-6 queries for each row.
}

如何优化?

有帮助吗?

1 个答案:

答案 0 :(得分:0)

比方说,您为每个记录查询6次(假设有100条记录)。因此,您要查询600次。

我假设每个记录都有一个唯一的ID。

  1. 在始终返回相同结果的循环外进行常量值查询。
    await odd_records.count()在我看来是不变的价值。
  2. 收集所有记录的ID,并在一个查询中获取每个记录的所有特定数据。
  3. 此外,如有可能,使用Promise.all进行查询。

它将查询数量减少到6。

相关问题