0

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

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

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

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

我已经尝试了这里这里提到的所有内容

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

问题:您能否帮我找出为什么在 30 次请求/秒后性能会下降,以及如何通过更改集群配置来解决这个问题。

提前致谢!

4

1 回答 1

0

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

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

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

我意识到这并不能直接说明 CPU 问题,但是您可以做任何事情来使单个查询更具响应性(包括过滤/等...)将提高您的吞吐量。

于 2015-11-06T15:29:21.483 回答