I am also running into the same problem, and start seeing see
java.net.SocketException.

I've set the following properties on my HttpConnection
client = new HttpClient();
                        
                HttpClientParams clientParams = client.getParams();
                HttpConnectionManagerParams connectionManagerParams =
httpClient.getHttpConnectionManager().getParams();

                clientParams.setSoTimeout(_timeout);
                connectionManagerParams.setConnectionTimeout(_timeout);
                connectionManagerParams.setStaleCheckingEnabled(false);



However adding the Connection close to the header seems to be resolving the
number of open connections.

httppost.addRequestHeader("Connection", "close");




olegk wrote:
> 
> On Fri, 2008-06-27 at 11:25 -0700, Ken DeLong wrote:
>> All of our connections are to the exact same host - in fact, the sending
>> and receiving processes are on the same actual server.  The same dns name
>> is used for each request (we use the dns name of the machine, not the
>> string "localhost").
>> 
> 
> Ken,
> 
> Try disabling the stale connection check. It can happen, especially with
> TLS/SSL, that perfectly good connections are reported as stale. You can
> get a better insight as to why connections get dropped by turning on the
> context logging. For details see
> 
> http://hc.apache.org/httpclient-3.x/logging.html
> 
> Oleg 
> 
> 
>> We'll try the multithreaded connection manager next.  (I was pretty sure
>> the calling app was single threaded but I'm not 100% sure).
>> 
>> Thanks!
>> Ken
>> 
>> 
>> -----Original Message-----
>> From: Oleg Kalnichevski [mailto:[EMAIL PROTECTED] 
>> Sent: Friday, June 27, 2008 11:20 AM
>> To: HttpClient User Discussion
>> Subject: RE: Too Many Connections
>> 
>> On Fri, 2008-06-27 at 09:08 -0700, Ken DeLong wrote:
>> > That didn't help.  We changed to
>> > 
>> >    private HttpClient client = new HttpClient(new 
>> > SimpleHttpConnectionManager());
>> > 
>> 
>> Ken,
>> 
>> SimpleHttpConnectionManager re-uses the underlying connection object but
>> it cannot reuse the network socket when connecting to a different host.
>> Ii needs to close the old socket and open a new one every time it
>> connects to a different host. If you would like to keep alive connections
>> to multiple hosts, consider using MultiThreadedHttpConnectionManager
>> 
>> Regarding connections in TIME_WAIT state please see
>> 
>> http://wiki.apache.org/HttpComponents/FrequentlyAskedConnectionManagementQuestions
>> 
>> Oleg
>> 
>> 
>> > But we still see the same behavior.
>> > 
>> > Turning on the debug logs shows messages like
>> > 
>> > $ fgrep 'Connection is locked.  Call to releaseConnection() ignored.'
>> > server.log | wc -l
>> > 176
>> > 
>> > $ fgrep 'Releasing connection back to connection manager.' server.log 
>> > | wc -l
>> > 264
>> > 
>> > 
>> > What would cause the connection to be locked when releaseConnection() 
>> > is called?
>> > 
>> > 
>> > 
>> > -----Original Message-----
>> > From: Pete Keyes [mailto:[EMAIL PROTECTED]
>> > Sent: Thursday, June 26, 2008 3:27 PM
>> > To: HttpClient User Discussion
>> > Cc: Stephen Hiley
>> > Subject: RE: Too Many Connections
>> > 
>> > You need to use either of these:
>> >   - org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
>> >   - org.apache.commons.httpclient.SimpleHttpConnectionManager
>> > There are examples of both in the HttpClient site.
>> > 
>> > In addition to that you may need to tune the O/S to formally release 
>> > the CLOSE_WAIT files sooner.  There is a delay between when an 
>> > application closes a socket and when the O/S can formally release that 
>> > socket to avoid orphan packets.
>> > 
>> > See the documentation for your O/S on setting that value.
>> > 
>> >  
>> > ...Pete
>> > Starbucks Coffee Co.
>> > 2601 Utah Ave S.
>> > Seattle, WA. 98134
>> > (w) 206-318-5933
>> > (c) 206-914-4134
>> > 
>> > -----Original Message-----
>> > From: Ken DeLong [mailto:[EMAIL PROTECTED]
>> > Sent: Thursday, June 26, 2008 3:17 PM
>> > To: [email protected]
>> > Cc: Stephen Hiley
>> > Subject: Too Many Connections
>> > 
>> > We have a method in our app that calls httpclient like this:
>> > 
>> >    private HttpClient client = new HttpClient();
>> >    
>> >    public String send(String urlString, String xml)
>> >    {
>> >            PostMethod postMethod = new PostMethod(urlString);
>> >            
>> >            // Put the XML in the request
>> >            try
>> >            {
>> >                    RequestEntity entity = new
>> > StringRequestEntity(xml, "text/xml", "UTF-8");
>> >                    postMethod.setRequestEntity(entity);
>> >            }
>> >            catch(UnsupportedEncodingException e1)
>> >            {
>> >                    logger.warn("Couldn't encode the xml?", e1);
>> >                    return "" +
>> > IContentPublishingService.ACTION_ERROR;
>> >            }
>> > 
>> >            // Send the data and get the response
>> >            String response = null;
>> >            try
>> >            {
>> >                    client.executeMethod(postMethod);
>> >                    byte[] responseBody =
>> > postMethod.getResponseBody();
>> >                    response = new String(responseBody);
>> >            }
>> >            catch(HttpException e)
>> >            {
>> >                    logger.warn("Fatal protocol violation: " + 
>> > e.getMessage());
>> >                    return "" +
>> > IContentPublishingService.ACTION_ERROR;            
>> >            }
>> >            catch(IOException e)
>> >            {
>> >                    logger.warn("Fatal transport error: " + e.getMessage());
>> >                    return "" +
>> > IContentPublishingService.ACTION_ERROR;
>> >            }
>> >            finally
>> >            {
>> >                    // Release the connection.
>> >                    postMethod.releaseConnection();
>> >            }
>> > 
>> >            return response;
>> >    }
>> > 
>> > 
>> > This method is called rapidly by a single thread in our application.
>> > After 1500 calls or so, we start to see java.net.SocketException, too 
>> > many open files.  Netstat reveals that there are many sockets in 
>> > CLOSE_WAIT and TIME_WAIT states.  It seems that httpclient is not 
>> > reusing the connection managed by the HttpClient instance, and instead 
>> > is closing the connection and creating a new one.  This appears to be 
>> > in conflict with all the documentation that we could find.
>> > 
>> > An interesting wrinkle is that the sending and receiving side of the 
>> > connection are both on the same machine.  The URL is constructed using 
>> > the machine's dns name, not "localhost".
>> > 
>> > ----------------------------------------------------------------------
>> > --
>> > --
>> > Kenneth DeLong
>> > Software Architect
>> > Engineering
>> > BabyCenter, LLC
>> > 
>> > [EMAIL PROTECTED]
>> > p:  415.344.7616
>> > AIM: kenwdelong
>> > 
>> > http://www.babycenter.com
>> > 
>> > 
>> > 
>> > This email message is for the sole use of the intended recipient(s) 
>> > and may contain confidential and privileged information. Any 
>> > unauthorized review, use, disclosure or distribution is prohibited. If 
>> > you are not the intended recipient, please contact the sender by reply 
>> > email and destroy all copies of the original message. If you are the 
>> > intended recipient, please be advised that the content of this message 
>> > is subject to access, review and disclosure by the sender's Email 
>> > System Administrator.
>> > 
>> > 
>> > ---------------------------------------------------------------------
>> > 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]
>> > 
>> 
>> 
>> ---------------------------------------------------------------------
>> 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]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Too-Many-Connections-tp18144578p18172951.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]

Reply via email to