首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TCP保持活不工作

TCP保持活不工作
EN

Stack Overflow用户
提问于 2014-06-10 05:42:58
回答 1查看 3.1K关注 0票数 3

情况:

  • Debian服务器上的Postgres 9.1
  • Scala(Java)应用程序使用侦听/通知机制通过JDBC获得通知

由于通知之间可能有很长的停顿时间(多天),我遇到了这样的问题:底层TCP连接在一段时间后悄然终止,而我的应用程序停止接收通知。

在谷歌搜索解决方案时,我发现可以在连接上设置一个参数tcpKeepAlive。所以我把它设置为true,并且很高兴。直到第二天,我才再次看到我的联系已不复存在。

由于我一直怀疑,有一个wireshark捕获并行运行,现在证明是非常有用的。就在上一次成功地就感兴趣的连接进行通信大约两小时后,我的应用程序就向数据库服务器发送了一个保活包。但是,服务器使用RST进行响应,因为它似乎已经关闭了连接。

服务器上的net.ipv4.tcp_keepalive_time设置为7200,即2小时。

我需要以某种方式在服务器上启用“保持活动”还是增加keepalive_time

这就是保持我的应用程序连接的方法吗?

TL;DR:我的数据库连接在长时间不活动后被终止。设置tcpKeepAlive没有修复它,因为服务器使用RST进行响应。该怎么办呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-10 12:35:36

正如Craig在评论中所建议的,这个问题很可能与服务器和应用程序之间的某个网络硬件有关。修复方法是增加保持活动消息的频率。

在我的例子中,操作系统是Windows,您必须创建一个具有空闲时间(以毫秒为单位)的注册表密钥,然后再发送消息。关于那个这里的信息

我把时间定在15分钟,这似乎解决了这个问题。

更新:看起来只解决了这个问题。经过大约两天的程序运行时间,我的连接又中断了。每次我使用连接时,我都会检查它的有效性。这看起来不像是,也不是解决方案,但它仍然是一个解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24133668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档