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

时间:2015-12-29 14:25:05

标签: java tomcat solr jmeter performance-testing

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

1)如果我在测试/测试标准中做错了会产生不准确的结果,

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

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

4)需要调整jmeter

5)这是正常的

环境详细信息:

win7 - 8GB内存 - i7

apache tomcat 7/8 - jetty(我在3.6和5.2中都尝试了所有这三个)

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

每个solr核心中的30M文档

使用在

中导入的相同版本的solr对核心编制索引

*测试详情(以jmeter为单位):

60位用户

20秒加速期

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

每个用户6次查询(infinetly运行)

2 个答案:

答案 0 :(得分:2)

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

我们最近也从3.X版本切换到5.X. 对于简单的查询和简单的方面,我们还有一个巨大的(因子0.8)性能回归。但整体而言,搜索应用程序的速度很快(因素1.2)。

自3.6以来,lucene的大量工作是近实时搜索(NRS)。主要是lucene-folk减少了对记忆的影响,从IndexReaderLeafReader(=每段读者)。

其他很大的改进是lucene现在更多地了解索引中的标记类型(BytesRef而不是字符串)并且可以使用Automaton来浏览索引(而不仅仅是跳过索引)令牌到其他像前缀搜索)。

每学期快速访问所有文档,是lucene的重点,从一开始就没有改进。

可以肯定的是,solr 3.X中的简单刻面是以ms为单位的性能,因为大多数刻面值都在主内存中。因此速度非常快但价格昂贵且只有快速而且没有索引更新。

可能您可以切换编解码器以获得更好的"搜索固定字段值"性能。如果您切换到版本5.4(因为它speed-up faceting on doc values fields),大多数情况下您可以从新的DocValues中获益。

请注意,solr-folk等待面对的证明现在真的慢了。如果你也可以通过5.4写一些问题来证明这一点SOLR-8096:Major faceting performance regressions

关于分面的更新:

SOLR-8096仍处于打开状态,但solr 5.5似乎很快通过SOLR-8466进行分面:Uninverted field faceting is re-enabled, for higher performance on rarely changing indices

答案 1 :(得分:0)

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

将同一台服务器恢复为Solr 5.2.1并重建索引“normalises”操作。

Solr 5.3.0我们在underow和SolrJetty下进行了测试,性能令人沮丧。 Solr 5.4.0使用标准的SolrJetty分布(我们提高了堆)进行了测试,性能低于5.3.0。

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