Elasticsearch慢搜索查询性能

时间:2015-11-05 00:41:34

标签: java database elasticsearch lucene elasticsearch-query

我在调整Elasticsearch时遇到很多问题,以提供高搜索查询性能。这些是我的规格:

ES设置: 版本:0.90.0,集群中有2个节点(m3.2xlarge aws intances),每个32GB RAM,50%分配给ES_HEAP_SIZE,没有交换

数据: 75MM文件,每个25个字段

基准查询: 针对5个文本字段的多匹配查询

我已经尝试了所有提到的herehere

最多30个请求/秒输入查询频率,响应时间小于1秒。超过30多个请求/秒,性能急剧下降,响应时间增加到50秒。虽然这种情况发生,JVM堆是稳定的(bigdesk大约7-8),GC也很稳定。然而,CPU迅速增加并且是800%(8核)并且负载平均值非常高16.热线程继续在搜索和评分函数之间切换,例如BooleanScorer2.nextDoc,BooleanQuery.createWeight,DisjunctionSumScorer.advance,BufferedIndexInput.refill等等

问题:您能否帮我找出30个req​​ / sec后性能下降的原因以及如何通过更改群集配置来解决这个问题。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我知道您已经看到了CPU限制行为,但是当您开始遇到性能问题时,您是否看到任何I / O峰值?

如果您将索引存储在EBS卷上,我不会对像您这样的测试开始看I / O饱和感到惊讶。 M3实例具有快速本地(临时)SSD卷,如果您正在调整响应性,则应确保索引存储在本地。

https://www.elastic.co/blog/performance-considerations-elasticsearch-indexing

我意识到这并没有直接说出CPU问题,但是你可以采取的任何措施来使单个查询更具响应性(包括过滤/等等)将提高你的吞吐量。