使用postgresql在ubuntu上进行连接空闲超时设置时遇到了困难

时间:2015-01-21 23:46:34

标签: linux postgresql ubuntu timeout

我是Linux服务器配置的初学者,我对它没有太多的了解。我使用linux ubuntu root服务器来建立一个带postgres数据库的网站。我的电脑上的操作系统是Windows 7。

几分钟后(我不太确定,需要多长时间,也许是5分钟左右,不是很多)没有做任何事情我失去了联系,这真的很烦人。我用谷歌搜索了如何解决它,但没有真正找到解决方案,或者没有理解它们。

例如,我尝试更新我的postgresql.conf并编辑了这个值:

#tcp_keepalives_idle 
#tcp_keepalives_interval        
#tcp_keepalives_count

这并没有真正帮助。我希望有机会闲置30分钟,而不会失去联系。

然后我读了另一个解决方案:

http://www.gnugk.org/keepalive.html

老实说我真的不明白,我必须添加的是哪些内容。 因为当我检查这个时:

sysctl -A | grep net.ipv4
它告诉我:

net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200

这应该意味着我不会在2小时内失去连接,不是吗?

我也不太了解线路是什么......这是否意味着,客户端连接的每项服务,即使他处于非活动状态,他仍然会连接2小时?无论是例如postgresql还是ftp还是什么?

请帮帮我! 谢谢!

安德烈

1 个答案:

答案 0 :(得分:5)

好吧,似乎我解决了这个问题。虽然这里没有答案,但我只是想解释一下我的解决方案。

当我在连接上闲置几分钟时,我的ISP似乎很快就断开了我的连接。似乎是CGN(运营商级NAT)的问题。

我解决了这个问题,用 sysctl 设置keepalive包。

所以我使用了那些参数值:

net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 20
net.ipv4.tcp_keepalive_time = 180

这意味着3分钟后将发送第一个keepalive包,当每分钟(60秒)没有连接活动时,将发送一个新的保持活动包,这20次。 总而言之,这阻止了我的连接分手。

也许如果另一个人在这里也有这个问题,那可能就是它的解决方案。