我想從java客戶端調用我的遠程tomcat服務器,但我間歇性地得到SocketTimeoutException:連接超時。 (http://docs.oracle.com/javase/7/docs/api/java/net/SocketTimeoutException.html)SocketTimeoutException連接超時:我如何調試我的服務器的根本原因
這裏是堆棧跟蹤
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 box上,有沒有辦法可以查看爲什麼我的連接被拒絕?
*確切*例外是什麼?你已經給出了兩個版本。當我嘗試連接時,我會期待ConnectException:'connect timeout',或者在執行I/O時,我會期待SocketTimeoutException:'連接超時'。 – EJP
你應該添加更多的細節,你已經檢查過什麼「服務器」,框架,語言,目的,日誌?同一網絡?遠程? VPN?協議正在使用?現在你只是說「我的程序壞了」 –
更新了描述,讓我知道現在是否更有意義,或者你想要其他具體細節。謝謝。 – user2562732