首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres tuning max_connections

Postgres tuning max_connections
EN

Stack Overflow用户
提问于 2018-01-13 14:13:25
回答 1查看 522关注 0票数 1

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

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

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

编辑:是否有可能依赖于它的实现,例如,我是如何编写python代码的,而不管连接是否在睡眠时被删除?

EN

回答 1

Stack Overflow用户

发布于 2018-01-14 01:40:22

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

default_pool_size = 4将保留4个到postgres的永久连接,当会话完成时,汇集您的36个连接以使用4个连接中的一个。

我推荐使用pooler,因为服务器上的连接是否持续取决于您是否断开连接。此外,僵尸将保持连接,而您的代码将启动新的会话。

简而言之,要运行查询,您必须以用户身份连接到数据库。如果您在同一会话上运行另一个事务,则重用该连接(如果您没有断开连接)。您必须显式断开连接才能关闭会话。如果您无法做到这一点,连接将保持在服务器上(使用max_connections插槽之一。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48237410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档