gpt4 book ai didi

python - Postgres 调整 max_connections

转载 作者:行者123 更新时间:2023-11-29 12:53:44 24 4
gpt4 key购买 nike

我有一个多线程进程,其中 36 个线程随机写入数据库,平均每 10 秒一次,每个线程有 99% 的空闲时间( sleep )。

我不确定这是否意味着我有 36 个事件连接,或者实际上只有一两个,因为每个线程都在休眠。可能不相关,但他们都使用相同的用户名。

我应该将配置文件中的 max-connections 选项减少到 36 还是像 4 这样的小值(以反射(reflect)在任何时刻,几乎可以肯定不超过 4 个同时写入的可能性)?

编辑:它的实现是否可能依赖于它,即无论连接是否在 sleep 时断开,我如何编写 python 代码?

最佳答案

这里最简洁的设置是使用 pgbouncer 进行连接池: https://pgbouncer.github.io/config.html

default_pool_size = 4 将保留 4 个与 postgres 的永久连接,当 session 完成时,将您的 36 个连接集中使用四个中的一个。

我推荐 pooler,因为连接是否在服务器上持续存在取决于您是否断开连接。僵尸也会保持连接,而您的代码会启动新 session 。

简而言之 - 要运行查询,您必须以用户身份连接到数据库。如果您在同一 session 上运行另一个事务,您将重用该连接(如果您没有断开连接)。您必须明确断开连接才能关闭 session 。如果您不这样做,连接将保留在服务器上(使用 max_connections 插槽之一。

同样从 9.6 开始,我们有 idle_in_transaction_session_timeout,如果它的 idla 时间超过 n 周期,它会杀死事务,这将有助于对抗僵尸。

关于python - Postgres 调整 max_connections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48237410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com