node.js - RDS 管理控制台中显示的 sequelize 和连接中的最大连接池大小的差异

标签 node.js postgresql sequelize.js amazon-rds

我在 AWS RDS 上使用 postgres 9.5 作为数据库,并将 Sequelize 作为带有 node.js 的 ORM。 DB 的 max_connections 是 1660,而 Sequelize 的最大连接池大小是 600。即使在更高的负载下(每秒约 600 个查询),Sequelize 的资源请求超时错误证明了这一点,AWS RDS 的管理控制台显示数据库连接数为 10。

我想问一下 RDS 控制台中的 DB 连接是否与在 RDS 中的 max_connections 和 Sequelize 中的最大连接池大小中配置限制的连接的含义相同。

如果它们相同,那么为什么 RDS 控制台没有显示在上述高负载时期使用了更多连接?

最佳答案

I want to ask if DB connections in the RDS console mean the same thing as the connection for which limits are configured in max_connections in RDS and max connection pool size in Sequelize.



是的,数据库连接意味着 max_connections 设置限制的相同类型的连接。但是,RDS 控制台值滞后。如果连接高峰只是暂时的,它们可能根本不会出现,如果它们出现,那将是事后出现。即使我将 RDS 用于我的生产数据,我仍然会建立一个本地数据库来测试这样的事情,因为它比 RDS 提供的更容易实时和更深入地监控。我对 Sequelize 知之甚少,无法说明它是否与“最大连接池大小”所指的内容相同。

If they are the same, then why doesn't the RDS console show more connections being used during the above mentioned times of higher load?



要么它们在那里,但您无法在滞后的控制台中看到它们,要么 Sequelize 实际上并没有产生它们。数据库日志文件中是否有条目?

不管怎样,你为什么要这个?您的数据库没有 600 个 CPU。而且可能也没有 600 个独立的 IO channel 。您要做的就是刺激并发连接相互争夺资源,并由于自旋锁或 LWLock 的争用而降低整体吞吐量。

关于node.js - RDS 管理控制台中显示的 sequelize 和连接中的最大连接池大小的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58949175/

相关文章:

javascript - 如何在typeORM中的@ManyToMany中保存关系

postgresql - 将字符替换为 postgresql 中的另一个字符

sql - PSQL 只选择唯一的记录

node.js - Sequelize 获取最近的位置获取点

node.js - 仅从 Travis 向 Coveralls 发送数据,而不是在本地测试时

node.js - ./node_modules/css-loader 中的错误? : ENOENT: no such file or directory node_modules/node-sass/vendor

node.js - 如何强制使用命名空间前缀?

sql - 返回动态列集

node.js - Node Sequelize Postgres - BulkCreate 忽略自定义字段的重复值

node.js - 可以在没有主键的情况下在联结表上删除或更新