【问题标题】:Solr - Multi Core vs Multiple Instance for Many Database TablesSolr - 许多数据库表的多核与多实例
【发布时间】:2015-03-20 07:45:32
【问题描述】:

我有性能方面的问题,想要一个最好的建议,Multi CoreMulti Instance(with different port)?让我们先看看我的案例:

  • 目前我正在运行具有多核的 solr,并且运行正常。只有一个问题有时会“在处理方面字段时堆内存不足”,然后我必须重新启动 solr。 (为了尽量减少重启次数,我用高内存启动 solr:java -Xms1000M -Xmx8000M -jar start.jar)

  • 我有 8core-2.8GHtz /15GB Ram 和优化硬盘的亚马逊 ec2 实例。

  • 我有很多数据库表(大约 100 个)并且必须为每个表创建不同的模式(导致创建不同的核心)。

  • 每个表都有数百万个文档,每个文档有 7-9 个索引字段和 10-50 个存储字段。

  • 我的门户网站应该处理非常高的流量(目前我每秒有 10 个请求,可能会增加到 50-100/秒)。我知道 'solr' 可以解决这个问题,但只是告诉你,我也关心每一个最小的性能问题

  • 通过 PHP 和 CURL 搜索 solr 到特定的核心,所以在不同的 solr 实例中搜索也没有问题。

问题:

据我所知Solr handles one request at a time。所以我认为如果我创建多个 solr 实例并在不同的端口启动它们,那么我的门户网站可以一次处理更多请求。 (如果用户在不同的表中搜索)。

那么,你会建议我什么?单个 Solr 实例中的多核?还是每个都有单/双核的多个实例?

在不同端口运行多个 solr 实例有什么问题吗?

注意: 在这里,我可以/可能/将结合 less-searched-core(s)/small-core(s) 在一个实例中AND大流量- 单独实例中的核心 一个实例中的两三重流量核心等Coz,为每个表创建不同的实例(这里~100 ) 会占用太多的硬件资源。

【问题讨论】:

    标签: solr


    【解决方案1】:

    由于一周多以来我没有得到任何答案,而且我也尝试了许多 solr 案例(还阅读了一些文章),我想分享我的经验作为我自己问题的答案。这可能/将有助于未来的观众。我试过serverfault也没有成功。

    Solr 可以一次处理更多请求

    我通过运行长查询 [qTime=7203, 大约7sec] 和几个 small-queries-after-long-one [qTime=30],solr 首先响应小查询,即使它们在 long-one 之后运行。

    这点给出了很多答案: 使用具有多个核心的单个 solr 实例。只需将 High 内存分配给 JVM。


    其他要点:

    1. 每个 solr 实例都需要 RAM,因此运行多个实例将需要更多资源,这会很昂贵。如果您使用的是facetssort fields,那么您需要为每个实例分配更多的 RAM。

    正如你在我的例子中看到的,我需要用高内存(8GB)启动 solr。您可以看到Danish Web Archive 的案例,它使用多个实例并为每个实例分配 9GB RAM,总 RAM 为 256GM。

    2.您可以通过java -Djetty.port=8984 -jar start.jar在不同的端口上运行多个solr实例。一切正常,但我遇到了一个问题。

    虽然索引它可能会给出“内存不足错误”,然后 solr 实例将被杀死。因此,您再次需要启动具有高内存的第二个实例,这将导致更多的 RAM 需求。

    3. Solr资源需求和性能问题可以理解here。根据这个 64 位环境,建议使用 12GB RAM 以获得良好的性能。 Solr 优化解释here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2010-12-07
      • 1970-01-01
      相关资源
      最近更新 更多