【发布时间】:2014-07-12 04:46:15
【问题描述】:
我有一个用户在使用我们的应用时遇到了崩溃问题并且没有正确关闭他与数据库的连接 - 最终达到了他的连接限制并且无法重新登录。
没关系。问题最终得到解决,应用程序现在可以正确关闭连接。
我想知道,如果用户达到了他的连接限制,而我没有做任何事情,那么 Postgres 9.1 自行断开连接的默认设置是什么?
【问题讨论】:
标签: postgresql connection timeout
我有一个用户在使用我们的应用时遇到了崩溃问题并且没有正确关闭他与数据库的连接 - 最终达到了他的连接限制并且无法重新登录。
没关系。问题最终得到解决,应用程序现在可以正确关闭连接。
我想知道,如果用户达到了他的连接限制,而我没有做任何事情,那么 Postgres 9.1 自行断开连接的默认设置是什么?
【问题讨论】:
标签: postgresql connection timeout
好吧,对于你的实际问题:
如果用户达到他的连接限制,而我没有做任何事情,Postgres 9.1 自行断开连接的默认设置是什么?
如果您所说的连接是与真实客户端的活动连接(即客户端仍然存在,没有崩溃和退出,并且可以对其连接套接字进行读写),Postgres 不会 “自行断开连接”。如果您对修剪此类空闲客户端的方法感兴趣,请参阅this question。
另一方面,正如您之前提到的,Postgres 后端可能名义上连接到真正崩溃或退出的客户端。在这种情况下,Postgres 可能不会注意到客户端已经消失,而不仅仅是处于空闲状态一段时间。我相信确切的时间将由“TCP keepalive time”操作系统设置控制,或者您甚至可以通过连接参数在客户端中调整此设置:查看各种keepalives-related settings。
【讨论】: