Node JS-Sequelize连接太多-CPU使用率100%



我正在使用第三方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.
}

如何进行优化?

有什么帮助吗?

假设每个记录要查询6次(假设有100条记录(。因此,您查询了600次。

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

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

它将把查询数量减少到6个。

最新更新