linux - 使用 postgresql 在 ubuntu 上努力设置连接空闲超时

标签 linux postgresql ubuntu timeout

我是 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/

相关文章:

objective-c - 在 Linux 上编译 Objective-C

linux - 如何在 Unix 中将一行转移到另一行

postgresql - 在 elixir 中使用 Ecto.Repo 时哪些函数被称为 'under the hood'

postgresql - 表达式中带有 sha() 函数的 Postgres 索引

c - GTK C 如何将滚动窗口添加到 vbox

python - 在 ubuntu 中使用 cron 的 Bigsql Postgres pg_dump 命令不起作用

linux - Mercurial : Importing changes from the diff of two repo

regex - 使用 RegEx 匹配未知子串

node.js - Sails 拒绝与 sails-postgresql 模块的 PostgreSQL 连接

ubuntu - 新安装的 nginx 不提供默认页面