We have built a small application based on Apache Httpclient to
test the speed of our database connection. The problem is that we get 'Connection refused' errors at completely unpredictable moments.
We're creating 50 threads that each wait for a random number of miliseconds and then do this:
The 'executeQuery' method eventually does this:
The PostMethod is created like this:
Please let me know if this doesn't make sense. I find it hard to decide what to post and what to leave out.
Sometimes it starts throwing exceptions that look like this:
29-sep-2006 9:53:19 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
If this happens we make it go through three more retries (of necessary). Sometimes that isn't enough and we get:
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.<init>(Socket.java:365)
at java.net.Socket.<init>(Socket.java:238)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:709)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:393)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
etc.
I have been trying to figure this one out for more than a week but I still don't understand
what *really* causes a 'connection refused'. I guess that is because there may be many different causes.
Any clues pointing me in the right direction will be much appreciated.
[ September 29, 2006: Message edited by: Iris Hoekstra ]