Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.net.SocketInputStream.socketRead0的可能原因_Java_Tomcat_Serversocket - Fatal编程技术网

java.net.SocketInputStream.socketRead0的可能原因

java.net.SocketInputStream.socketRead0的可能原因,java,tomcat,serversocket,Java,Tomcat,Serversocket,我已经在Tomcat上托管并运行了我的应用程序war,它已经处于良好状态好几个月了。tomcat配置最近没有变化,也没有任何其他与环境相关的变化,比如机器上的java版本或war本身。此外,服务器上的负载不会突然或快速增加,因为它是一个隔离的环境。 就在最近几天,从客户端到服务器的调用挂断了客户端,服务器上的跟踪显示 java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.socketR

我已经在Tomcat上托管并运行了我的应用程序war,它已经处于良好状态好几个月了。tomcat配置最近没有变化,也没有任何其他与环境相关的变化,比如机器上的java版本或war本身。此外,服务器上的负载不会突然或快速增加,因为它是一个隔离的环境。 就在最近几天,从客户端到服务器的调用挂断了客户端,服务器上的跟踪显示

 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1525)
 com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3274)
 com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4433)
 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:386) 
是的,可以实现读取超时以防止挂起,这将导致套接字超时异常并防止客户端挂起。但是问题出现了,导致套接字读取无限期等待的所有可能的原因是什么


尝试添加读取超时,这会导致客户端出现大量异常并导致失败。有关套接字读取无法返回并无限期等待的原因的任何帮助信息?

套接字读取无法阻止的唯一合理原因是:

  • 远程服务器尚未写入客户端试图读取的数据

  • 阻止客户端/服务器通信的网络问题


  • 在这方面的任何更新都会遇到与tomcat 9.0.5、jdk 1.8_201相同的错误,并使用visual vm发现问题