我是 linux 服务器配置的初学者,对此我了解不多。我将 linux ubuntu 根服务器用于带有 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 之类的?
请帮帮我! 谢谢!
安德烈
最佳答案
好的,看来我解决了这个问题。虽然这里没有答案,但我只是想解释一下我的解决方案。
当我在一个连接上闲置几分钟时,我的 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 秒)没有连接事件时,将发送一个新的 keepalive 包并且这 20 次。 总而言之,这可以防止我的连接中断。
也许如果另一个人在这里也有这个问题,那可能是一个解决方案。
关于linux - 使用 postgresql 在 ubuntu 上努力设置连接空闲超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28079004/