繁体   English   中英

Elasticsearch批量upserts上的CPU高负载

[英]Elasticsearch high CPU load on bulk upserts

我的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.

以下是一些索引的概述: 指标 包围的是此期间正在更新的一些,并且它们都具有成比例的大量docs.deleted ,这可能与此有关...?

ES 5.3.2,单个EC2 t2。小型实例类型,单核,2GB RAM + 2GB交换,30GB SSD。

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

限制那些批量请求的吞吐量可能是我可以尝试的方法,但同样,希望它可以在没有该问题的情况下得到解决。

也许每个索引大小的两个碎片太大了?

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

编辑1:这是CloudWatch在12小时内的监视。 通常,即使在批量更新,繁忙的搜索时间等期间出现峰值时,CPU使用率也远远低于50%。正常使用率接近5%。 cpu使用概述

我严重怀疑这是否会对其他人有所帮助,但是在重新启动ec2实例后,峰值似乎已大大减少,现在从未超过30%。 我认为该实例运行了近一年。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM