繁体   English   中英

Tomcat 7和Axis 2的Java套接字超时异常

[英]Java Socket Timeout Exception with Tomcat 7 and Axis 2

我们的Java SOAP Web服务有一个Tomcat 7和Axis 2。 我们还使用C3PO连接池(也可以在其他正常工作的Web服务中使用)。 Web服务工作大约两天,在那段时间后它不再工作了。 然后,我们的消费客户收到Java Socket Read Timeout Exception。 重新启动Tomcat servlet后,一切正常。 处理请求的持续时间约为3秒。 Axis 2的默认套接字超时为30秒。 我们的客户等待超时为60秒。 关于这个问题的奇怪之处在于它在一段时间内工作然后问题就出现了。

我不知道我可以在这里找到哪种代码来找到问题。 什么原因导致套接字超时?

套接字超时的原因:

尝试连接到远程服务器或通信期间,特别是长期服务器时,可能会发生套接字超时。

它们可能是由网络上的任何连接问题引起的,例如:

  1. 阻止两台计算机通信的网络分区。
  2. 远程机器崩溃了。 这不容易与网络分区区分开。
  3. 其中一台机器的防火墙设置发生变化,阻止了通信。
  4. 设置错误,客户端正在尝试与错误的计算机通信,该计算机不在网络上。 这可能是Hadoop配置文件中的错误,也可能是DNS表或/ etc / hosts文件中的条目。
  5. 如果它通过长途网络(即群集外),则可能是由于网络播放而导致的瞬态故障。
  6. 如果使用对象存储的客户端(例如Amazon S3和OpenStack客户端),则套接字超时可能是由远程限制客户端请求引起的:您的程序正在发出太多的PUT / DELETE请求,并且被远端故意阻止。 在创建许多小文件或执行批量删除(例如,删除包含许多子条目的目录)时,最有可能发生这种情况。 它也可能来自长途链路的短暂故障。

将此异常与ConnectionRefused错误进行比较,后者表示远端有一台服务器,但没有运行的程序可以在所选端口上接收入站连接。 套接字超时通常意味着存在某些内容,但它或网络无法正常工作

识别和修复套接字超时

套接字超时的根本原因是机器之间的连接失败,因此请尝试通常的过程

  1. 检查设置:这是您真正想要与之交谈的机器吗?
  2. 从引发异常的计算机,您可以解析主机名。
  3. 解析后的主机名是否正确?
  4. 你能ping远程主机吗?
  5. 目标计算机是否运行相关的Hadoop进程?
  6. 你能telnet到目标主机和端口吗?
  7. 你能从任何其他机器telnet到目标主机和端口吗?
  8. 在目标计算机上,您可以使用localhost作为主机名telnet到端口。 如果这可行但外部网络连接超时,则通常是防火墙问题。
  9. 如果是远程对象存储:地址是否正确? 重复操作时它会消失吗? 它只发生在批量操作上吗? 如果是后者,那可能是由于远端的节流。

资源链接:

套接字超时详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM