当我们为 Postgres DB 配置内存设置时,每个连接的推荐内存分配是多少?有什么公式可以应用吗?
我知道应该分配服务器内存的 25%。但是我们如何根据数据库连接进行分配呢?我们怎么知道,应该分配的最大连接数是多少?
同样在多节点环境中,我们是否可以为每个节点(在 Postgres-ds.xml 最大连接数中)分配比数据库中实际分配的连接更多的连接?
当我们为 Postgres DB 配置内存设置时,每个连接的推荐内存分配是多少?有什么公式可以应用吗?
DBA 不会定义每个连接的预分配内存。会话将动态分配所需的内容,或根据使用类型使用在服务器启动时预先分配的共享内存。有关可以定义的内容,请参阅文档中的资源消耗。
我知道应该分配服务器内存的 25%。但是我们如何根据数据库连接进行分配呢?我们怎么知道,应该分配的最大连接数是多少?
最大客户端连接数 ( max_connections
) 被计入在服务器启动时预先分配的共享内存量。
在管理内核资源中,文档说它的大小(以字节为单位)是:
(1800 + 270 * max_locks_per_transaction) * max_connections
但是内存不是决定最大连接数的主要因素,它是机器的原始功率和核心数,以及连接池程序是否将与服务器相关联。这主要是为了避免过多的并发活动查询导致服务器停止爬行。
同样在多节点环境中,我们是否可以为每个节点(在 Postgres-ds.xml 最大连接数中)分配比数据库中实际分配的连接更多的连接?
如果有多个客户端节点指向同一个 PostgreSQL 实例,则它们的连接数总和不能 outreach max_connections
。
然而,当使用连接池时,connection
一个词变得模棱两可。您想知道它是从客户端到池程序的连接还是从池程序到数据库服务器的连接。通常,允许连接到池的连接比连接到数据库的连接多得多。