【问题标题】:Elasticsearch high CPU load on bulk upserts批量 upsert 上的 Elasticsearch 高 CPU 负载
【发布时间】:2018-06-04 16:08:36
【问题描述】:

bulk 请求(通常每个请求 500-1000 条记录)中更新插入数万条记录时,我的弹性搜索服务器每天都会出现大量 CPU 峰值。 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 swap,30gb SSD。

有没有人可以建议调试/修复高 CPU 负载?希望除了增加 EC2 实例大小之外,还可以做一些事情。

限制这些批量请求的吞吐量可能是我可以尝试的,但再次希望它可以在没有那个的情况下解决。

也许这些大小的每个索引的两个分片太多了?

我将尝试在下一次高峰期间提供_nodes/hot_threads 输出。

编辑 1: 这是 12 小时内的 CloudWatch 监控。通常 CPU 使用率远低于 50%,即使在批量更新、繁忙搜索时间等期间达到峰值也是如此。正常使用率接近 5%。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我严重怀疑这对其他人是否有帮助,但在重新启动我的 ec2 实例后,峰值似乎已显着降低,现在从未超过 30%。我想,那个实例已经不间断地运行了将近一年。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2014-07-17
      • 2012-05-14
      • 1970-01-01
      相关资源
      最近更新 更多