Sequelize (mysql):频繁达到最大数据库连接数

问题描述 投票:0回答:1

我正在将 Sequelize (v6.35) 与 MySQL + Express 应用程序一起使用,并且我遇到了一个问题,我的数据库偶尔会达到最大连接限制 (500)。这种情况每天都会发生一两次。出现此错误时我必须手动重新启动服务器。

我已经配置了连接池中的最大连接数,并且还尝试了不同的选项。我已经为此工作了一个多月,但尚未找到解决方案。我的其他具有类似设置的项目没有这个问题。

可能是什么导致了这个问题?

这是我的续集实例。

// sequelize.js
export const sequelize = new Sequelize(database, username, password, {
  host,
  dialect: "mysql",
  logging: false,
  pool: {
    max: 10,
    min: 0,
    acquire: 30000,
    idle: 10000,
  },
  retry: {
    max: 3,
    match: ["ETIMEDOUT", Sequelize.ConnectionError],
  },
});

这是主要入口点。

// main.js
sequelize
  .authenticate()
  .then(() => {
    console.log("🔗 DB connected!");
    createServer().then((app) =>
      app.listen(PORT, () => {
        console.log(`🚀 Server ready at port: ${PORT}`);
      }),
    );
  })
  .catch((err) => {
    console.log(`🚨 Failed to connect db: ${err.message}`);
    sequelize.close();
  });
mysql node.js database express sequelize.js
1个回答
0
投票

mysql服务器限制连接数。您可以通过以下方式检查当前值:

mysql -e 'show variables like "max_connections"'
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 2000  |
+-----------------+-------+

您可以使用以下方式更改当前值:

mysql -e 'SET global max_connections = 2500'

但是这个值会在 mysql 服务器重新启动时重置。要永久更改这些值,您必须在

/etc/
中编辑配置文件,有时是
/etc/my.cnf
,有时是
/etc/mysql.d/*
。添加在
[mysqld]
部分:

max_connections = 2500
© www.soinside.com 2019 - 2024. All rights reserved.