On Thu, Dec 15, 2005 at 09:17:59AM -0800, George Ludwig wrote: > I have a distributed crawler that I'm debugging, and > it appears that my last issue is with HttpClient. > Currently what happens is, everything runs well for a > while, but then some of the nodes stop working because > the seem to be unable to get a connection from the > connection manager, because they are waiting on a > semaphore notification that never comes. > > If anyone has any ides on this one, please let me > know! > > -George (debug info follows) >
George Are you sure you _always_ call HttpMethod#releaseConnection() when you are done processing an HTTP response? Oleg > I enabled logging on the > MultiThreadedHttpConnectionManager, specifically > because that's where the failure seems to occur. Here > are the last few debug lines from a node that has > stopped: > > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > Freeing connection, > hostConfig=HostConfiguration[host=http://www.oregonrealtors.org] > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > enter > HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration) > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > Notifying thread waiting on host pool, > hostConfig=HostConfiguration[host=http://www.oregonrealtors.org] > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > enter > HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration) > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > Getting free connection, > hostConfig=HostConfiguration[host=http://www.oregonrealtors.org] > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > enter > HttpConnectionManager.releaseConnection(HttpConnection) > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > Freeing connection, > hostConfig=HostConfiguration[host=http://www.oregonrealtors.org] > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > enter > HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration) > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > No-one waiting on host pool, notifying next waiting > thread. > DEBUG > [org.apache.commons.httpclient.MultiThreadedHttpConnectionManager] > Unable to get a connection, waiting..., > hostConfig=HostConfiguration[host=http://evangelion.polito.it] > > > > In addition, here is a jrockit thread dump that > indicates a download thread is trying to get a > connection from the connection manager, but is waiting > for notification (there are actually many threads in > this state): > > > > "ThreadPool-Crawler DownloadJob > PooledThread-0-running" id=256 idx=0xa2 > tid=-1325696080 prio=5 alive, in native, waiting > -- Waiting for notification on: > org/apache/commons/httpclient/[EMAIL PROTECTED] > at jrockit/vm/Threads.waitForSignal()V(Native > Method) > at > jrockit/vm/Locks.wait(Ljava/lang/Object;)V(Unknown > Source)[optimized] > at > jrockit/vm/Locks.wait(Ljava/lang/Object;J)V(Unknown > Source) > at > org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.doGetConnection(Lorg/apache/commons/httpclient/HostConfiguration;J)Lorg/apache/commons/httpclient/HttpConnection;(MultiThreadedHttpConnectionManager.java:509) > ^-- Lock released while waiting: > org/apache/commons/httpclient/[EMAIL PROTECTED] > at > org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.getConnectionWithTimeout(Lorg/apache/commons/httpclient/HostConfiguration;J)Lorg/apache/commons/httpclient/HttpConnection;(MultiThreadedHttpConnectionManager.java:394) > at > org/apache/commons/httpclient/HttpMethodDirector.executeMethod(Lorg/apache/commons/httpclient/HttpMethod;)V(HttpMethodDirector.java:152) > at > org/apache/commons/httpclient/HttpClient.executeMethod(Lorg/apache/commons/httpclient/HostConfiguration;Lorg/apache/commons/httpclient/HttpMethod;Lorg/apache/commons/httpclient/HttpState;)I(HttpClient.java:396) > at > org/apache/commons/httpclient/HttpClient.executeMethod(Lorg/apache/commons/httpclient/HttpMethod;)I(HttpClient.java:324)[inlined] > at > crawler/util/FetcherUtil.getContentAsString(Ljava/lang/String;)Ljava/lang/String;(FetcherUtil.java:68)[optimized] > at > crawler/fetch/Downloadable.run()V(Downloadable.java:44)[optimized] > at > services/threadpool/ThreadPoolThread.run()V(ThreadPoolThread.java:83) > at jrockit/vm/RNI.c2java()V(Native Method) > -- end of trace > > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
