【发布时间】: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