【问题标题】:Facing issue while implementing connection pooling with solr使用 solr 实现连接池时面临的问题
【发布时间】:2014-12-24 15:40:08
【问题描述】:

我有这个要求,我想限制对 solr 的并发调用数说 50。所以我试图在 HTTP 客户端中实现连接池,然后在 solr 对象 HttpSolrServer 中使用。请在下面找到代码

`
HttpClient httpclient = new DefaultHttpClient();

    httpclient.getParams().setParameter(
            HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 50);
    httpclient.getParams().setParameter(
            HttpClientUtil.PROP_MAX_CONNECTIONS, 50);


    HttpSolrServer httpSolrServer = new HttpSolrServer(
            "solr url",httpclient);

    SolrQuery solrQuery = new SolrQuery("*:*");
    for (int i = 0; i < 100000000; i++) {

        long numFound = httpSolrServer.query(solrQuery).getResults()
                .getNumFound();
        System.out.println(numFound);
    }`

我预计从我的应用程序到 solr 只创建 50 个连接,然后在释放较旧的连接之前可能会遇到一些缓慢。然而,尽管在 solr 端有等待连接并且这些连接永远不会再次使用,但在每个固定时间间隔都会创建一个新连接。

示例输出

tcp 0 0 192.168.0.241:22 192.168.0.109:54120 ESTABLISHED tcp 0 0 ::ffff:192.168.0.241:8190 ::ffff:192.168.0.109:47382 TIME_WAIT tcp 0 0 ::ffff:192.168.0.241:8190 ::ffff:192.168.0.109:47383 ESTABLISHED tcp 0 0 ::ffff:192.168.0.241:8190 ::ffff:192.168.0.109:47371 TIME_WAIT tcp 0 0 ::ffff:192.168.0.241:8190 ::ffff:192.168.0.109:47381 TIME_WAIT

其中 109 是我运行应用程序的 ip,而 241 是运行 solr 的 ip。在这种情况下 ffff:192.168.0.109:47382 将永远不会被再次使用并最终被 solr 终止

我是不是在某个地方出错了。 任何帮助将不胜感激

【问题讨论】:

  • 您使用的是哪个版本的 SolrJ?

标签: solr httpclient solrj


【解决方案1】:

HttpSolrServer 应该是单例的。每个 solr url 只创建一个 HttpSolrServer 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2015-08-01
    • 1970-01-01
    • 2012-08-20
    • 2012-05-09
    相关资源
    最近更新 更多