[
https://issues.apache.org/jira/browse/HTTPCLIENT-1150?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Kalnichevski resolved HTTPCLIENT-1150.
-------------------------------------------
Resolution: Invalid
Jira is an issue tracker and not a bulletin board. Please post all your
HttpClient questions to the httpclient-user list.
http://hc.apache.org/mail.html
Oleg
> HttpClient 4.1 MaxTotalConnections and MaxPerRoute questions
> --------------------------------------------------------------
>
> Key: HTTPCLIENT-1150
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1150
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpConn
> Affects Versions: 4.1.1, 4.1.2
> Environment: LAMP stack
> Reporter: mohan pindyala
>
> We have a java web application which makes calls to 2 of our third party
> Services using httpclient.
> Following are the settings for
> org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManagerr. the numbers are
> ridiculously high
> httpclient.defaultMaxPerRoute = 10000
> httpclient.maxTotalConnections = 20000
> Socket and connection timeout on org.apache.http.params.HttpConnectionParams
> are set as
> httpclient.socketTimeout = 120000ms
> httpclient.connectionTimeout = 20000ms
> we have disabled the
> org.apache.http.params.HttpConnectionParams#setStaleCheckingEnabled = false.
> we have a cron process running which checks for idle connections using
> ClientConnectionManager object every 10 seconds and closes expired & idle
> connections.
> We also have retry handler set on
> org.apache.http.impl.client.DefaultHttpClient. It retries once with a 40ms
> delay.
> So questions are as follows
> 1. Does above setting look ok for you ? if not what are the optimal numbers.
> Lets say there are 4 third party services we have to call , how should we set
> these numbers to support that.
> 2. We sometimes get following errors, which are not able to figure out if it
> is the third party server or httpclient issue. These errors show up during
> peak volume hitting our servers.
> a. java.net.SocketException: Connection reset
>
> b. :java.net.SocketTimeoutException: Read timed out
> c. org.apache.http.conn.ConnectionPoolTimeoutException:
> Timeout waiting for connection
> we checked with our third party services and everything was normal on their
> side when these things happened.
> Following are the stack traces for each exception type
> org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for
> connection
> at
> org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:417)
> at
> org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:300)
> at
> org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:224)
> at
> gwy.core.io.TrackingClientConnectionRequest.getConnection(TrackingClientConnectionRequest.java:68)
> at
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:391)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
> java.net.SocketException: Connection reset
> at java.net.SocketInputStream.read(SocketInputStream.java:168)
> at
> org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:149)
> at
> org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:110)
> at
> org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:260)
> at
> org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
> at
> org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
> at
> org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
> at
> org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> at
> org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> at
> gwy.core.io.TrackingClientConnection.receiveResponseHeader(TrackingClientConnection.java:140)
> at
> org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
> at
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
> at
> org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:622)
> at
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:454)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
> java.net.SocketTimeoutException: Read timed out
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.read(SocketInputStream.java:129)
> at
> org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:149)
> at
> org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:110)
> at
> org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:260)
> at
> org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
> at
> org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
> at
> org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
> at
> org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> at
> org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> at
> gwy.core.io.TrackingClientConnection.receiveResponseHeader(TrackingClientConnection.java:140)
> at
> org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
> at
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
> at
> org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:622)
> at
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:454)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]