我正在尝试从Java客户端调用远程Tomcat服务器,但我偶尔会遇到SocketTimeoutException:连接超时。 (http://docs.oracle.com/javase/7/docs/api/java/net/SocketTimeoutException.html)
以下是堆栈跟踪:
以下是堆栈跟踪:
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:382)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:241)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:228)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:365)
at java.net.Socket.connect(Socket.java:527)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:570)
at org.apache.commons.httpclient.contrib.ssl.EasySSLProtocolSocketFactory.createSocket(EasySSLProtocolSocketFactory.java:189)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
这不一致,经过我的多次连接尝试后它消失了。
我知道socketTimeout的含义,但我没有遇到读取超时,而是连接超时,这意味着客户端无法与服务器建立tcp连接。这意味着服务器忽略了客户端尝试连接它的请求,因为要么它不可用,要么在该端口上正在做其他事情。我知道我的服务器是可达的并且正在运行。
显然,我的连接服务器的尝试被拒绝了,我想找出原因。我该如何开始?我应该查找什么?我的服务器在运行着一个EC2实例上的redhat linux盒子上,有没有办法查看我的连接被拒绝的原因?