我有一个Java客户端,该客户端调用一个线程击中servlet并从服务器上的日志中检索最后几行,并在客户端上显示所检索的日志行。每隔一段时间,日志线程会逐渐消失。Application Server是TOMCAT,但是该错误在Tomcat和WebSphere上都可以间歇性再现,Windows和Windows上的客户端上的客户端在Windows上。在AIX上的Windows和Server上的客户端,此问题迄今还没有发生。我必须提到该代码稳定了很多迭代,突然开始给出这些问题。
我到目前为止尝试过的
-
日志阅读客户端每0.1秒调用线程(使用睡眠)。我尝试将睡眠时间增加到代码中的5秒,但没有帮助。
-
创建URLConnection对象时,我设置了诸如ConnectTimeOut和ReadTimeOut之类的属性。我认为ReadTimeOut可能是原因,因为那会抛出插座例外。
3我尝试使用tomcat配置。
Connector port="9962" protocol="HTTP/1.1" connectionTimeout="200000" redirectPort="8445" acceptCount="30"
4。使用后,URL连接是"断开连接"的。
5堆栈跟踪似乎暗示该请求从未达到应用程序服务器,这可能是因为连接的某些OS层限制。但是在这种情况下,Windows的活动查看器中可能会有一个条目。
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
您将如何诊断此问题?服务器日志不会显示任何可疑的东西。端和服务器没有任何其他网络设备,因此我不需要任何其他网络设备,因此不需要代理,因此请关闭防火墙。到目前为止,我尚未使用保持活力。
很难预测是什么原因引起的。但是,您的下一步应该是尝试在客户端和/或服务器上运行数据包sniffer,以查看TCP连接请求是否将其送入Windows计算机。
如果问题出现在Tomcat和WebSphere中,这意味着原因是较低的原因。即在OSES中,TCP/IP堆栈,防火墙或网络中。(如果服务器在虚拟中运行,则可能是虚拟网络中的辍学。)