如何在Postgresql中使用tcp_keepalives设置?
Postgresql有3个keepalive设置用于管理丢弃的连接(在postgresql.conf中):
tcp_keepalives_count 默认情况下,这些值为0. 我希望Postgresql在一段时间后丢弃客户端连接,如果客户端失去网络连接或进入休眠状态. 我目前正在使用这些值: tcp_keepalives_count = 1 我在Mac OS X上运行PostgreSQL 8.4,但似乎没有任何效果.我的测试是我在表中锁定一行(使用SELECT FOR UPDATE)并断开工作站与网络的连接.但在Postgresql中我仍然看到工作站持有锁. 我希望在时间过去之后(在这种情况下为60秒),连接将被终止并且锁将被释放. 要么我做错了,要么我完全误解了这应该是怎么回事. 任何建议?
我认为您需要配置您的操作系统.目前尚未广泛支持通过程序更改keepalive参数.这应该可以帮到你:
Using TCP keepalive to Detect Network Errors 你的参数选择也很糟糕.如果tcp_keepalives_count = 1工作,那么即使一个丢失的keepalive数据包也会丢失你的连接.并且单个数据包经常丢失.我在MacOSX / FreeBSD上的/etc/sysctl.conf中使用以下内容:net.inet.tcp.keepidle = 60000net.inet.tcp.keepintvl = 10000在断开连接后,操作系统将最多丢弃连接140秒(空闲的8个keepalive数据包,间隔为10秒). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 当对象处于状态时,带有Pundit&States
- boost-propertytree – 我们如何在另一个boost ptree中插入
- 使用加密来保护你的Flash文件被反编译
- Flex 一些用法
- Oracle在linux下做导出计划的总结
- Reagent React Clojurescript警告:seq中的每个元素都应该有
- ios – Jenkins成功,但没有生成IPA文件
- 如何在Oracle SQL中列出模式中的所有表?
- Swift Compiler Error Cannot assign to the result of thi
- ruby-on-rails – 在Ruby on Rails中验证Django密码提供了不