postgresql空闲连接以及连接有效性检查的参数小结

来源:这里教程网 时间:2026-03-14 20:52:31 作者:

一、idle_session_timeout参数用来控制空闲会话连接超时的时间。区别于tcp_keepalives相关参数,当一个会话连接长时间没有执行SQL或者活动时,会将该会话释放,可以释放缓存避免出现例如OOM等问题idle_session_timeout:默认值为0,表示禁用,其单位是毫秒;14版本引入了idle_session_timeout参数,可以在设置该参数,超过设置的时间,数据库会关闭空闲连接。之前的老版本可以使用pg_timeout插件,达到同样的效果。但是同样也会关闭掉我们想保留的正常的空闲连接,所以设置TCP keepalive是更好的解决方案。二、postgresql的tcp_keepalives相关参数设置可以及时发现无效连接,如下这样可以在5分钟以内就探测出无效连接tcp_keepalives_idle = 60 # TCP_KEEPIDLE, in seconds;tcp_keepalives_interval = 20 # TCP_KEEPINTVL, in seconds;tcp_keepalives_count = 10 # TCP_KEEPCNT;三、PG14版本还引入了client_connection_check_interval参数,每隔一段时间检测client是否离线(断开),如果已经离线,则快速结束掉正在运行的query,,浪费数据库资源。默认是0,单位默认毫秒官方文档解释: client_connection_check_interval = 0 # time between checks for client # disconnection while running queries; 0 for never四、总结:1) idle_session_timeout参数类似于mysql 的wait_timeout参数,数据库连接空闲时间超过这个参数值,就被数据库给断开!包括实效连接和正常空闲连接!2)postgresql的tcp_keepalives相关参数设置可以及时发现无效连接,但不会断开空闲时间太长的连接,3)client_connection_check_interval参数可以防止某个连接已经失效了,但是还在执行查询返回给客户端!定期检查数据库连接的可用性,类似于tcp_keepalives相关参数!五、关于pg数据库参数修改是否需要重启的判断;查看pg数据库配置参数的基本信息!可以通过context字段值来了解修改该参数是否需要重启数据库!postgres=# select * from pg_settings;其中context字段值分为:internal、postmaster、sighup等等具体如下图片所示 查看tcp_keepalives相关参数,都是user,说明可以直接通过set来修改自己连接的tcp_keepalives设置!postgres=# select name ,context from pg_settings where name like 'tcp_keepalives%';name | context-------------------------+---------tcp_keepalives_count | usertcp_keepalives_idle | usertcp_keepalives_interval | user

相关推荐