Solr性能基准测试(3.6版与5.2版)



我正在尝试测试SOLR 5.2(我的目标是切换到它)与SOLR 3.6(目前在prod中使用)的SOLR性能,我正在使用Jmeter执行测试,测试计划中有6个查询,都是简单的查询(查询固定字段值,例如:some_field:"fixed_value",或简单方面)。。。。问题是,我希望在通过版本进行增强后,性能会更好,但结果总是更差(平均响应时间更差),所以我问:

1) 如果我在测试/测试标准中做了错误的事情,给出了不正确的结果,

2) 或者可能是因为查询使用固定值,所以从缓存或类似的东西中读取

3) 不适合在我的本地(非服务器机器)上测试

4) 需要调整jmeter

5) 这是正常的

环境详细信息:

win7-8GB RAM-i7

apache tomcat 7/8-码头(我为3.6和5.2尝试了所有三种)

java7/8(我同时尝试了3.6和5.2)

每个solr core 中有3000万份文档

核心使用与中导入的solr版本相同的solr进行索引

*测试详细信息(单位:jmeter):

60名用户

20秒上升期

吞吐量20请求/秒(这是预期的命中率,所以我调整了一个延迟来达到它)

每个用户6个查询(中网运行)

您的问题是关于solr 5.2的性能,它只有6个查询和简单的方面搜索。没有范围查询,没有复杂查询,也没有更新(这将清除缓存)。

我们最近也从3.X版本切换到了5.X版本。对于您的简单查询和简单方面,我们还有一个巨大的(因子0.8)性能回归。但总的来说,搜索应用程序要快得多(1.2倍)。

自3.6以来,lucene中的许多工作都是用于近实时搜索(NRS)。主要是lucene人减少了对内存的影响,从IndexReader改为LeafReader(=每个片段的阅读器)。

另一个巨大的改进是,lucene现在对索引中的令牌种类有了更多的了解(BytesRef而不是Strings),并且可以使用Automaton来遍历索引(而不是像前缀搜索那样只从一个令牌跳到另一个令牌)。

每个学期都能快速访问所有文档,这是lucene从一开始就关注的焦点,现在还没有改进。

可以肯定的是,solr3.X中的简单faceting是以毫秒为单位的性能,因为大多数facet值都在主内存中。所以速度很快,但成本很高,而且只有在没有更新索引的情况下才快速。

您可以切换编解码器以获得更好的"搜索固定字段值"性能。如果切换到5.4版(因为它加快了对文档值字段的faceting),则最有可能从用于facet搜索的新DocValues中受益。

请注意,士兵们正在等待一个证据,证明面对面现在真的很慢。如果你也可以用5.4来证明这一点,请在问题SOLR-8096中写一些东西:主要的faceting性能回归

关于贴面的更新:

SOLR-8096仍然开放,但SOLR 5.5似乎可以通过SOLR-8466再次快速进行面处理:重新启用了未转换字段面处理,以在很少变化的索引上获得更高的性能

我可以确认,5.2.1(5.3.x和5.4.x)之后的任何Solr版本都会给我们的系统带来巨大的性能下降。查询的响应时间翻了一番,服务器的平均负载达到10。

在同一台服务器上恢复到Solr 5.2.1并重建索引"正常化"操作。

Solr 5.3.0我们在潜航和SolrJetty下进行了测试,结果表现不佳。Solr 5.4.0使用标准的SolrJetty分布进行了测试(我们提出了堆),性能比5.3.0差。

服务器和JVM参数的规格保持不变。

最新更新