我在调优Elasticsearch以提供高搜索查询性能方面遇到了很多问题。以下是我的规格:
ES设置:版本: 0.90.0,群集中有2个节点(m3.2xlarge aws intances),每个节点32 no内存,50%分配给ES_HEAP_SIZE,无交换
数据:75 25文档,每个字段25个
针对基准的查询:针对5个文本字段的多匹配查询
我试过所有提到的here和here
当输入查询频率达到30个请求/秒时,响应时间保持在1秒以内。超过这个30+请求数/秒,性能会直线下降,响应时间会增加到50秒。在这种情况下,JVM Heap是稳定的(在bigdesk中大约是7-8 ),GC也是稳定的。然而,CPU迅速增长,达到800% (8核),平均负载非常高16。热门线程不断在搜索和评分功能之间切换,如BooleanScorer2.nextDoc、BooleanQuery.createWeight、DisjunctionSumScorer.advance、BufferedIndexInput.refill等
问:你能帮我找出为什么在30req/sec后性能会直线下降,如果可能的话,如何通过改变集群配置来解决这个问题?
提前感谢!
发布于 2015-11-06 23:29:21
我知道您看到了CPU受限的行为,但是当您开始遇到性能问题时,您是否看到了任何I/O峰值?
如果您将索引存储在EBS卷上,那么使用像您这样的测试开始看到I/O饱和也不会让我感到惊讶。M3实例具有快速的本地(临时)固态硬盘卷,如果您正在调优响应能力,则应确保索引存储在本地。
https://www.elastic.co/blog/performance-considerations-elasticsearch-indexing
我意识到这并不直接与CPU问题有关,但您可以做的任何事情都可以使单个查询更具响应性(包括过滤/等等)。将提高您的吞吐量。
https://stackoverflow.com/questions/33534762
复制相似问题