我有性能问题并想要最适合Multi Core
或的建议Multi 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 一次处理一个请求。所以我认为如果我创建多个 solr 实例并在不同的端口启动它们,那么我的门户网站可以一次处理更多请求。(如果用户在不同的表中搜索)。
那么,你会建议我什么?单个 Solr 实例中的多核?还是每个具有单/双核的多个实例?
在不同的端口上运行多个 Solr 实例有什么问题吗?
注意:在这里,我可以/可能/将在一个实例中组合较少搜索的核心/小核心和在单独实例中的重流量核心或两三重流量- core in one-instance etc. Coz,为每个表创建不同的实例(这里约 100 个)会占用太多的硬件资源。
我通过运行长查询 [qTime=7203, 大约 7sec] 和几个小查询 - 在长查询 [qTime=30] 之后,Solr 首先响应较小的查询,即使它们在长查询之后运行。
这一点给出了很多答案:使用具有多个核心的单个 solr 实例。只需将高内存分配给 JVM。
其他要点:
1.每个 solr 实例都需要 RAM,因此运行多个实例需要更多资源,这将是昂贵的。如果您正在使用
facets
,sort fields
那么您需要为每个实例分配更多的 RAM。正如你在我的例子中看到的,我需要用高内存(8GB)启动 solr。您可以看到丹麦 Web Archive的案例,它使用多个实例并为每个实例分配 9GB RAM,累积总 RAM 为 256GM。
2.您可以使用命令在不同的PORTS上运行多个solr实例
java -Djetty.port=8984 -jar start.jar
。一切正常,但我遇到了一个问题。在编制索引时,它可能会给出“内存不足错误”,然后 solr 实例将被杀死。因此,您需要启动具有高内存的第二个实例,这将导致更多的 RAM 需求。
3. Solr资源需求和性能问题可以在这里理解。根据这个 64 位环境,建议使用 12GB RAM 以获得良好的性能。Solr 优化在这里解释。