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

问题描述

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

解决方法

        我相信您不会关闭连接,流或类似内容。您提到了PID文件,所以我想您正在Linux上运行。每当您获得网络连接或打开文件或创建过程时,Linux都会创建处理程序。处理程序的数量是有限的。不幸的是,我不太记得shell命令,但是我记得那个可以向您展示所有处理程序的命令已经存在。 因此,我建议您执行以下操作。我相信您的系统会定期更新详细信息。让我们说每一分钟。因此,使系统每秒执行一次此操作(如果需要,则每秒执行100次)。我相信它会更快。现在,减少时间段,看看它会在您提到的16小时后继续工作。如果这是这种行为,那么我对处理程序的假设是正确的。因此,尝试检查您的代码,看看每次打开输入/输出流时,您都将其正确关闭到了最后。创建和关闭流之后,可能添加日志记录。 祝好运!     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...