如何在谷歌云上选择postgres的正确值max_connections

How to choice correct value max_connections of postgres on google cloud

提问人:BaoTrung Tran 提问时间:11/11/2023 最后编辑:Jim MorrisonBaoTrung Tran 更新时间:11/18/2023 访问量:58

问:

我在谷歌上使用postgres云。当我使用默认配置创建postgres时,如果多个用户连接(示例:10个用户),它都会给我抛出错误

remaining connection slots are reserved for non-replication superuser connections
sorry, too many clients already :: proc.c:360

当我max_connections = 300 时,没关系。错误不引发。但是我感到困惑的是,当用户数量增加时,为什么google postgres不扩展最大连接。

我有一个问题:为什么应用程序总是抛出错误对不起,如果我没有设置值max_connections已经有太多的客户端了? 当我的应用程序在生产中时,如何知道一次访问的最大连接数?如果我不设置默认max_connections postgres的默认max_connections是多少?

PostgreSQL 类型orm 谷歌云 sql

评论

0赞 John Hanley 11/11/2023
您只需要一个与数据库的连接。我使用连接池,以便回收连接。可扩展的设计不会不断打开额外的新连接。如果您正确设计了软件,即使对于 10,000 个用户来说,4 个连接也足够了。
0赞 BaoTrung Tran 11/11/2023
@JohnHanley感谢您的回答。如果我认为正确,这意味着我的代码在打开与数据库的连接时没有关闭正确的连接。如何检查连接未关闭?我计划使用idleTimeoutMillis设置超时,如果连接不关闭
0赞 John Hanley 11/12/2023
进行代码审查。我不认为 idleTimeoutMillis 会帮助你。
0赞 Sathi Aiswarya 11/14/2023
我在下面提供了答案,请检查并让我知道以下建议是否有帮助

答:

2赞 Sathi Aiswarya 11/12/2023 #1

如果未设置max_connections系统将使用默认值。如果默认连接值不足,您将收到错误。默认值通常为 100 个连接。如 本文档中提到的

max_connections自动计算,当您创建 Cloud SQL for PostgreSQL 实例时,机器类型配置设置会根据您选择的内核数自动调整可用内存大小的范围。这也决定了为实例设置的初始默认连接限制。

您可以通过连接到数据库并运行以下命令来查找实例的连接限制:

SELECT * FROM pg_settings WHERE name = 'max_connections';

若要确定可以为此标志设置的最大值,必须首先计算已在使用的后端连接数。此计算是 max_connections(最大客户端连接数)、autovacuum_max_workers(最大 autovacuum 进程数)和 max_worker_processes 的值的总和。总和不能超过 262142。