我的弹性搜索服务器每天都会产生巨大的CPU峰值,在bulk
个请求中(通常每个请求500-1000条记录)会记录数十条甚至数十万条记录。 CPU基本上锁定在100%,ES变得反应迟钝,最终死亡。
sudo service elasticsearch status
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2018-05-29 08:06:38 UTC; 23min ago
Docs: http://www.elastic.co
Process: 2437 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet -Edefault.path.logs=${LOG
Process: 2433 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
Main PID: 2437 (code=exited, status=127)
May 29 08:06:38 elastic1 systemd[1]: elasticsearch.service: Main process exited, code=exited, status=127/n/a
May 29 08:06:38 elastic1 systemd[1]: elasticsearch.service: Unit entered failed state.
May 29 08:06:38 elastic1 systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
以下是一些指数的概述:
包围的是在这段时间内正在更新的那些,它们都有相应大量的docs.deleted
,这可能与此有关......?
ES 5.3.2,单EC2 t2.small实例类型,单核,2GB RAM + 2gb交换,30GB SSD。
有没有人可以建议调试/修复高CPU负载?希望除了增加EC2实例大小之外,还可以做些什么。
限制这些批量请求的吞吐量可能是我可以尝试的,但同样,希望它可以在没有它的情况下修复。
这些尺寸的每个指数可能有两个碎片太多了?
我将尝试在下一次加价期间提供_nodes/hot_threads
输出。
编辑1: 这是Cloudhatch在12小时内进行的监控。即使在批量更新,忙碌搜索时间等期间加扰,CPU使用率通常也远低于50%。正常使用率接近5%。
答案 0 :(得分:0)
我非常怀疑这会对其他人有所帮助,但在重新启动我的ec2实例之后,似乎峰值显着下降,现在从未超过30%。我认为那个实例已经连续运行了近一年。