[英]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%。
我严重怀疑这是否会对其他人有所帮助,但是在重新启动ec2实例后,峰值似乎已大大减少,现在从未超过30%。 我认为该实例运行了近一年。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.