簡體   English   中英

Node JS - 續集太多連接 - CPU 使用率 100%

[英]Node JS - Sequelize Too many connections - CPU usage 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 個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM