Thanks Shawn,

I just regressed to Solrj 4.6.1 with http client 4.2.6 and am trying to
reproduce the problem.  Using YourKit to profile and even just manually
simulating a few users at once, I see the same problem of open sockets.  6
sockets opened to the solr server and 2 of them still open after all is
done and there is no server activity.  Although this could be sockets kept
in a connection pool.


On Thu, Feb 13, 2014 at 4:11 PM, Shawn Heisey <s...@elyograg.org> wrote:

> On 2/13/2014 1:38 PM, Jared Rodriguez wrote:
>
>> I am using solr/solrj 4.6.1 along with the apache httpclient 4.3.2 as part
>> of a web application which connects to the solr server via solrj
>> using CloudSolrServer();  The web application is wired up with Guice, and
>> there is a single instance of the CloudSolrServer class used by all
>> inbound
>> requests.  All this is running on Amazon.
>>
>> Basically, everything looks and runs fine for a while, but even with
>> moderate concurrency, solrj starts leaving sockets open.  We are handling
>> only about 250 connections to the web app per minute and each of these
>> issues from 3 - 7 requests to solr.  Over a 30 minute period of this type
>> of use, we end up with many 1000s of lingering sockets.  I can see these
>> when running netstats
>>
>> tcp        0      0 ip-10-80-14-26.ec2.in:41098ip-10-99-145-47.ec2.i:glrpc
>> TIME_WAIT
>>
>> All to the same target host, which is my solr server. There are no other
>> pieces of infrastructure on that box, just solr.  Eventually, the server
>> just dies as no further sockets can be opened and the opened ones are not
>> reused.
>>
>> The solr server itself is unphased and running like a champ.  Average
>> timer
>> per request of 0.126, as seen in the solr web app admin UI query handler
>> stats.
>>
>> Apache httpclient had a bunch of leakage from version 4.2.x that they
>> cleaned up and refactored in 4.3.x, which is why I upgraded.  Currently,
>> solrj makes use of the old leaky 4.2 classes for establishing connections
>> and using a connection pool.
>>
>
> This is something that I can look into.
>
> I have a SolrJ program with SolrJ 4.5.1 and HttpClient 4.3.1 that does not
> leak anything.  I thought it was migrated already to SolrJ 4.6.1, but now
> that I know it's not, I will upgrade SolrJ first and then HttpClient, and
> see whether I have the same problem with either upgrade.
>
> I am using HttpSolrServer, not CloudSolrServer, because the Solr servers
> are not running SolrCloud.  CloudSolrServer ultimately uses HttpSolrServer
> for its communication, so my initial thought is that this is not important,
> but we'll see.
>
> In version 4.7, Solr will include HttpClient 4.3.1.  See SOLR-5590.
>
> https://issues.apache.org/jira/browse/SOLR-5590
>
> A question for committers with a lot of experience: Do we have any tests
> that check for connection leaks?
>
> Thanks,
> Shawn
>
>


-- 
Jared Rodriguez

Reply via email to