我有性能方面的问题,想要一个最好的建议,Multi Core
或Multi Instance(with different port)
?让我们来看看我的案例优先:
目前我正在使用多核运行solr并且运行正常。只有一个问题,有时它会“处理facets字段时从堆内存中”,然后我必须重新启动solr。 (为了最小化重启次数,我启动了具有高内存的solr:java -Xms1000M -Xmx8000M -jar start.jar)
我的amazon ec2实例配备8核-2.8GHtz / 15GB Ram,并配有优化的硬盘。
我有很多数据库表(大约100个),必须为每个创建不同的模式(导致创建不同的核心)。
每个表都有数百万个文档,每个文档中有7-9个索引字段和10-50个存储字段。
我的门户网站应该处理非常高的流量(目前我有10个请求/秒,可能会增加到50-100 /秒)。我知道'solr'可以解决这个问题,但它只是告诉你我也关注每一个最小的性能问题
通过PHP和CURL搜索solr到特定的核心,所以在不同的solr实例中搜索也没有问题。
问题:
据我所知Solr handles one request at a time
。所以我认为如果我创建多个solr实例并在不同的端口启动它们,那么我的Web门户可以一次处理更多请求。 (如果用户在不同的表中搜索)。
那么,你会建议我什么?单个Solr实例中的多核?或者每个都有单/双核的多个实例?
让多个solr实例在不同的端口运行有什么问题吗?
注意:在这里,我可以/可能/将在一个实例中结合较少搜索的核心/小核心 AND 繁忙的流量-core(s)在单独的实例 OR 两个三重流量核心的单实例等 Coz ,为每个表创建不同的实例(~100这里)将占用太多的硬件资源。
答案 0 :(得分:0)
因为我从那以后没有得到任何答案而且我曾经尝试了许多solr案例(并且还阅读了一些文章),我想分享我的经验以回答我自己的问题。这可能/将有助于未来的观众。我试过serverfault
也没有成功。
Solr可以一次处理更多请求。
我通过运行长查询测试了它[qTime = 7203,约。 7秒]和几个小查询 - 经过长时间[qTime = 30],solr首先响应小查询,即使它们在长时间之后运行。
这一点在答案中提供了很多理由:使用具有多个核心的单个solr实例。只需为JVM分配高内存。
其他要点:
1。每个solr实例都需要RAM,因此运行多个实例将需要更多资源,这将是昂贵的。如果您使用facets
,sort fields
,则需要为每个实例分配更多RAM。
正如您在我的案例中所见,我需要启动具有高内存(8GB)的solr。您可以看到Danish Web Archive的案例,它使用多个实例并为每个实例分配9GB RAM并具有256GM的总RAM。
2。您可以java -Djetty.port=8984 -jar start.jar
在不同的PORT上运行多个solr实例。一切都运行正常但我遇到了一个问题。
虽然索引它可能会给“没有足够的内存错误”,然后solr实例将被终止。所以你再次需要以高内存启动第二个实例,这将导致更多的RAM需求。
3。 Solr资源需求和性能问题可以理解为here。根据这个64位环境和12GB RAM,建议性能良好。解释了Solr优化here。