TCP通信器在一段时间后停止工作

时间:2011-06-15 05:29:53

标签: java tcplistener

我们正在开发车辆跟踪系统。与每个VTS一样,我们在车辆中安装了GPS设备,这些设备将车辆位置详细信息发送到服务器。我们开发了一个TCP通信器,它继续运行并检查特定端口是否有任何连接请求。如果有,则为该设备创建一个线程,该线程保存所有设备位置详细信息。 TCP通信器按预期运行12到16个小时。但在12-16小时后,它停止响应。日志中没有错误或异常。即使是pid文件也存在,因此进程尚未被杀死。可能存在的问题是什么?我应该如何调试此问题?

提前致谢

1 个答案:

答案 0 :(得分:0)

我相信你不会关闭连接,流或类似的东西。你提到过PID文件,所以我猜你是在Linux上运行的。每次获得网络连接或打开文件或创建进程时,Linux都会创建处理程序。处理程序数量有限。不幸的是我不记得shell命令,但我记得那个可以显示所有处理程序的命令存在。

所以,我建议你执行以下操作。我相信您的系统会定期更新详细信息。让我们说每一分钟。因此,让系统每秒钟执行此操作(如果需要,可以每秒执行100次)。我相信它会更快。现在缩短期限,看看它会在你提到的16个小时后继续工作。如果这是行为,我对处理程序的假设是正确的。因此,尝试检查您的代码并查看每次打开输入/输出流时,将其正确关闭到最终。创建和关闭流后可能会添加日志记录。

祝你好运!