From looking at this code, it seems that you're creating a new connection manager for each time the thread is run.

That seems kind of crazy. Normally you'd create a single HttpClient instance, using the thread safe connection manager with support for 1000 threads.

-- Ken

On May 24, 2010, at 4:16pm, CrystalCracker wrote:


I have got 1000 dedicated Java threads where each thread polls a
corresponding url every one second.

Simplified version of the code is like this

MyThread extends() {
  Node node;
  MyThread(Node node) {
     this.node = node;
  }
  public void run() {
      Poller.poll()
  }
}

public class Poller {
   public static Node poll(Node node) {
       GetMethod method =  null;
        try {
            HttpClient client = new HttpClient(new
SimpleHttpConnectionManager(true));
            client.getParams().setParameter("http.socket.timeout", 120000);
        
            method = new GetMethod(node.getUrl());
            method.getParams().setSoTimeout(8000);

            client.executeMethod(method);

            method.getResponseHeaders();
            method.getResponseBody();
        } catch (IOException ex) {
           ex.printStackTrace();
       } finally {
           method.releaseConnection();
       }
   }
}

The threads are run one second:

for (int i=0; i <1000; i++) {
   MyThread thread = threads.get(i) // threads  is a static field
   if(thread.isAlive()) {
       // If the previous thread is still running, let it run.
   } else {
       thread.start();
   }
}

The problem is if I run the job every one second I get random exceptions
like these:

java.net.BindException: Address already in use
INFO httpclient.HttpMethodDirector: I/O exception (java.net.BindException)
caught when processing request: Address already in use
INFO httpclient.HttpMethodDirector: Retrying request

But if I run the job every 2 seconds or more, everything runs fine.

I even tried shutting down the instance of SimpleHttpConnectionManager()
using shutDown() with no effect.

It looks like if when myThread has finished running, the HttpClient it
started hasn't shutdown even though I told it to release conenction and/or
shutdown the manager.

Any ideas?


--
View this message in context: 
http://old.nabble.com/BindException-while-using-HttpClient-under-load-tp28662810p28662810.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


--------------------------------------------
Ken Krugler
+1 530-210-6378
http://bixolabs.com
e l a s t i c   w e b   m i n i n g





---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to