我们的ES群集存在很大问题。我们的一个节点始终使用99%的CPU。出于某种原因,与普通节点相比,elasticsearch
进程运行的线程数大约多3倍。我为2个节点附加了2个htop
屏幕截图,其中一个节点已经过载,另一个正常。请指教!
谢谢!
重载节点
普通节点
更新
群集架构:
11个节点,2个专用主站,9个数据节点。
节点硬件属性
大师赛:
奴隶:
群集中的文档:
~200百万
索引conf:
每个索引分为10个分片(5个主分片,5个副本)
查询:
搜索RT:~ 250/s
,索引RT:~ 6K/s
OS
Ubuntu 12.04.4 LTS
JAVA
java version "1.7.0_60" Java(TM) SE Runtime Environment (build 1.7.0_60-b19) Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
答案 0 :(得分:2)
想出来。
[2014-07-07 13:38:42,521][DEBUG][index.search.slowlog.query] [n013.my_cluster] [my_index][3] took[2s], took_millis[2066], types[my_type], stats[], search_type[QUERY_THEN_FETCH], total_shards[5], source[{"size":20,"from":0,"sort":{"_score":"desc"},"query":{"filtered":{"query":{"query_string":{"query":"my eight words space separated query","fields":["description","tags"],"default_operator":"OR"}},"filter":{"and":[{"range":{"ats":{"lte":1404730800}}},{"terms":{"aid":[1,2,4]}}]},"_cache":false}}}], extra_source[]
问题出现在"filter": {"and": ...}
内,与bool
类型查询相比,ES的这类查询看起来更重。因此,只要您想应用某些filters
,请使用bool
过滤器(must
,must_not
和should
)
Reff:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-bool-filter.html
干杯!
答案 1 :(得分:1)
基于手头的稀疏信息,我有几个可能是问题的猜测:
碎片不均衡,你有热点。确保以最常用的索引进行分片,以便每台计算机都可以完成其工作。另外,查看索引级别" index.routing.allocation.total_shards_per_node"试图强制平衡。
也许在搜索方面,您指定搜索应始终转到" primary"碎片。主要标识不是平衡的东西,所以基本上,第一个节点有主要分片,而其他后面出现的是所有辅助分片。