You also can use next params:

 ConnPerRoute connPerRoute = new
ConnPerRouteBean(CONNECTION_PER_ROUTE);
 ConnManagerParams.setMaxConnectionsPerRoute(params, connPerRoute);

Where CONNECTION_PER_ROUTE is number of simultanious connections to
the same host

On 18 Лис, 01:13, ernestw <[email protected]> wrote:
> Hmmm.  I wouldn't use that solution.  With Keep-alive you never
> explicitly close your connections - consumeContent merely reads
> everything in the response input/error stream and connections are
> automatically closed when they are idle.  Increasing the maximum
> connections per route only gives you more connections to stall in the
> same way before running into the same problem.  It's possible the
> server will timeout and close those connections before you exhaust
> your local connection max but realize you're now tying up somebody
> else's resources.
>
>   Ernest
>
> On Nov 17, 3:05 pm, Eurig Jones <[email protected]> wrote:
>
>
>
>
>
>
>
> > My thinking was - If there is no obvious "close" method anywhere, and
> > all examples I've seen of the HttpClient do not mention a close/finish
> > type method then you would assume that it just handles it for you!
>
> > Looks like that is not always the case, at least in a timely fashion.
>
> > Thanks ernestw I'll have a look at consumeContent, but I got around
> > the issue another way which I documented in a blog 
> > post:http://androidisland.blogspot.com/2010/11/httpclient-and-connectionpo...
>
> > Regards,
> > Eurig Jones
>
> > On Nov 17, 3:02 pm, ernestw <[email protected]> wrote:
>
> > > I've run into a similar issue which was solved by making sure to
> > > always call consumeContent on the HttpEntity contained in the
> > > HttpResponse object (regardless of the response code).  HttpClient
> > > tries to use keep-alive; if you don't consume every request before
> > > they are returned to the ThreadSafeClientConnManager, you're left with
> > > an open connection that isn't expecting to service a new request.
>
> > > If you *really* wanted to, you could grab the ClientConnectionManager
> > > from the DefaultHttpClient and call closeIdleConnections.  I highly
> > > suggest that you attempt to properly consume HttpEntity objects before
> > > using closeIdleConnections though.
>
> > >   Ernest Woo
> > >   Woo Games
> > >  http://www.woogames.com
>
> > > On Nov 14, 5:37 pm, Eurig Jones <[email protected]> wrote:
>
> > > > I'm having an issue with the HttpClient. It is throwing this exception
> > > > quite consistently after 3 requests to the same location...
>
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152): fetch() sending failed
> > > > to url http://...<myUrl>...
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):
> > > > org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting
> > > > for connection
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolBy
> > > >  Route.java:
> > > > 353)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > org.apache.http.impl.conn.tsccm.ConnPoolByRoute
> > > > $1.getPoolEntry(ConnPoolByRoute.java:238)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
> > > > $1.getConnection(ThreadSafeClientConnManager.java:175)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDi
> > > >  rector.java:
> > > > 325)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.j
> > > >  ava:
> > > > 555)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.j
> > > >  ava:
> > > > 487)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.j
> > > >  ava:
> > > > 465)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > chesspresso.client.android.net.HttpCall.fetch(HttpCall.java:111)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > chesspresso.client.android.net.HttpCall.fetch(HttpCall.java:132)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > chesspresso.client.android.net.HttpCall.post(HttpCall.java:102)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > chesspresso.client.android.net.ServerCall.registerGoogle(ServerCall.java:
> > > > 91)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > chesspresso.client.android.activity.RegisterGActivity
> > > > $RegisterTask.doInBackground(RegisterGActivity.java:201)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > chesspresso.client.android.activity.RegisterGActivity
> > > > $RegisterTask.doInBackground(RegisterGActivity.java:1)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > android.os.AsyncTask$2.call(AsyncTask.java:185)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > java.util.concurrent.FutureTask.run(FutureTask.java:137)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
> > > > 1068)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > java.util.concurrent.ThreadPoolExecutor
> > > > $Worker.run(ThreadPoolExecutor.java:561)
> > > > 11-14 22:27:37.299: INFO/
> > > > chesspresso.client.android.net.HttpCall(29152):     at
> > > > java.lang.Thread.run(Thread.java:1096)
>
> > > > Max connections seems to be 20 in my connection manager.
>
> > > > Here is my HttpClient creation code...
>
> > > > ...
> > > > private static DefaultHttpClient httpClient;
>
> > > > static
> > > > {
> > > >     HttpParams params = new BasicHttpParams();
> > > >     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
>
> > > >     SchemeRegistry schemeRegistry = new SchemeRegistry();
> > > >     schemeRegistry.register(new Scheme("http",
> > > > PlainSocketFactory.getSocketFactory(), 80));
>
> > > >     HttpConnectionParams.setConnectionTimeout(params,
> > > > ClientConfig.P_DEFAULT_CONN_TIMEOUT);
> > > >     HttpConnectionParams.setSoTimeout(params,
> > > > ClientConfig.P_DEFAULT_CONN_TIMEOUT);
> > > >     ConnManagerParams.setTimeout(params,
> > > > ClientConfig.P_DEFAULT_CONN_TIMEOUT);
>
> > > >     httpClient = new DefaultHttpClient(new
> > > > ThreadSafeClientConnManager(params, schemeRegistry), params);}
>
> > > > ...
>
> > > > I noticed that a few users of Axis2 framework have reported very
> > > > similar symptoms again after 3 requests to the same url. Axis2 uses
> > > > Apache HttpClient under the bonnet also.
>
> > > > Has anyone experienced a similar issue?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to