【发布时间】:2012-06-17 20:27:13
【问题描述】:
我编写了一个当前在 Ubuntu 12.04 x64 VM 上运行的服务器应用程序。应用程序连接到另一台服务器,从该服务器获取一些数据,对其进行转换,然后将其发送回在其他地方运行的客户端应用程序。所有这些都超过了 TCP 之上的 boost::asio。 IO相当重。
每天运行几个小时左右后,我们都会看到服务器断开客户端连接。当客户端尝试重新连接时,它们的连接一旦建立就会再次断开。 boost::asio 的错误报告是“Connection reset by peer”。这似乎无限期地持续下去。在此期间,我可以 ssh 进入机器,并且从我们的应用程序到服务器进程的连接仍然健康。负载适中。重新启动我们的应用程序即可解决问题。
关于如何进一步调查此问题的任何想法?
【问题讨论】:
-
1.这是否发生在您的开发环境中? 2.你有tcp转储吗? 3. 服务器进程是什么,它的日志上有什么? 4. 是否有任何防火墙、状态防火墙或路由器维护主机之间的任何状态? 4. 你有客户端的 strace 输出吗?
-
另一种选择:
netstat -an告诉你什么(当应用程序行为不端时)? -
MarkR: 1) 不,它不会发生在任何地方,除非有这个特定的安装。 2) 我现在正在运行 tcpdump。 3)我认为服务器进程不应该相关,它的连接一直保持稳定 4)我不知道 - 这是在客户端站点上。 5) 没有。我会试着弄一个。
-
ChrisopheD:没什么不寻常的,我看到的连接是我所期望的。
-
可能是客户端和服务器之间有防火墙或NAT框。同步cookies?
标签: linux tcp boost-asio