【问题标题】:struggling with connection idle timeout settings on ubuntu with postgresql在 ubuntu 上使用 postgresql 处理连接空闲超时设置
【发布时间】:2015-01-21 23:46:33
【问题描述】:

我是 linux 服务器配置的初学者,对它了解不多。我将 linux ubuntu 根服务器用于带有 postgres 数据库的网站。我的 PC 上的操作系统是 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 什么的?

请帮帮我! 谢谢!

安德烈

【问题讨论】:

  • 您知道tcp_keepalives_idletcp_keepalives_interval 应该低于您想要的空闲时间吗?例如,将它们设置为 60 秒。

标签: linux postgresql ubuntu timeout


【解决方案1】:

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

当我在连接上闲置几分钟时,我的 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 次。 总而言之,这阻止了我的联系破裂。

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

【讨论】:

    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2017-04-19
    • 2021-02-24
    • 2012-10-02
    • 2022-10-01
    相关资源
    最近更新 更多