套接字 - 故障率是多少?

时间:2014-05-20 09:25:45

标签: java sockets

我有一个Java套接字客户端与另一种语言编写的套接字服务器通信。我在Linux上运行它。

Java客户端使用测试逻辑编码 - 建立从java到另一种语言的客户端连接,将虚拟字符串发送到服务器,获取虚拟字符串 - 关闭客户端套接字 - 循环。

经过数百万次计算和大约7个小时后,我在java端获得了读取超时。

目前没有任何监控工具可以查看GC是否存在问题。

  • 这里的一般期望是什么?它应该永远运行,直到服务器空间耗尽或其他一些外部因素干扰?
  • 如何使此通信可靠?在这里要编写容错的最佳实践吗?

在此处添加回复以下评论:

感谢大家的回复。是的,异常被捕获并记录 - 这就是我如何了解套接字读取超时错误。并且是,连接已建立,发送也发生,然后发生读取超时(根据读取超时错误)..所以这令人费解 - 如果服务器出现问题,连接将不会成功或其他东西会在发送之前出错/阅读数据。此外,服务器上没有错误 - 服务器有10秒写入超时,但即便如此也没有错误 - 不知道为什么。 java有2分钟的读取超时 - 仍然抛出错误。

我只进行了错误记录而不是调试/信息级别。服务器应用程序上没有错误,只有java客户端抛出错误,然后它继续抛出读取超时1小时。那么,这又有点奇怪 - java一直在连接并发送测试字符串并且在接收数据时遇到了问题?和服务器从不抱怨?我可以编写容错来说明如果读取超时然后等待一段时间然后再试一次 - 但不确定这是否能完全解决我的问题。遗憾的是,服务器无法重写以保持套接字打开。

1 个答案:

答案 0 :(得分:0)

  

这里的普遍期望是什么?它应该永远运行,直到服务器空间耗尽或其他一些外部因素干扰?

确切地说,看起来确实发生了这种情况。您需要查看服务器端日志,以确切了解它没有响应的原因。

  

如何使此通信可靠?在这里可以编写容错的最佳实践吗?

如果服务器支持,最好尽可能长时间使用单个连接,而不是每个请求使用一个新连接。