Elasticsearch对批量upserts的高CPU负载

时间:2018-05-29 09:22:22

标签: elasticsearch

我的弹性搜索服务器每天都会产生巨大的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.

以下是一些指数的概述:indices 包围的是在这段时间内正在更新的那些,它们都有相应大量的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%。 cpu usage overview

1 个答案:

答案 0 :(得分:0)

我非常怀疑这会对其他人有所帮助,但在重新启动我的ec2实例之后,似乎峰值显着下降,现在从未超过30%。我认为那个实例已经连续运行了近一年。