ES使用_id排序导致集群CPU和内存都100%

闲来无事开发了一个ES的客户端,然后在查询数据的时候,使用了_id排序,测试环境上面用起来也没啥事,可到了线上就跪了,线上数据量是1.4亿左右,直接没有给相应的反应时间,只要一查询,立马就宕机。

查询了ES的官网说明:_id字段被禁止在聚合、排序和脚本中使用。如果需要对_id字段进行排序或聚合,建议将_id字段的内容复制到doc_values的字段中。

为什么_id字段会导致内存占满呢?利用_id进行排序的时候,ES会把所有的_id字段都加载到fielddata cache里面,而不是像我们在MySQL里面进行排序一样,先执行过滤条件,把符合条件的数据加载到内存里面再排序,于是当该系统跑到线上运行之后,线上的数据量过大就会导致内存被耗尽。

当出现了此值情况之后该如何处理呢?如何清理掉fielddata cache占用的内存呢?可以使用缓存清理命令:curl -X POST "ip:port/_all/_cache/clear"

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
Elasticsearch Fleet是Elasticsearch的一个功能,用于集群管理和监控。它提供了一个集中化的界面,可以方便地管理和监控多个Elasticsearch集群。 要使用Elasticsearch Fleet进行集群管理和监控,可以按照以下步骤进行操作: 1. 安装和配置Elasticsearch:首先,需要安装和配置Elasticsearch集群。可以参考Elasticsearch官方文档进行安装和配置。 2. 安装和配置Elasticsearch Fleet Server:Elasticsearch Fleet Server是一个独立的服务,用于管理和监控Elasticsearch集群。可以通过Elasticsearch的安装包或Docker镜像来安装Fleet Server。 3. 连接到Fleet Server:一旦安装和配置了Fleet Server,可以通过浏览器访问Fleet Server的Web界面。在浏览器中输入Fleet Server的地址和端口,然后登录到Fleet Server。 4. 添加Elasticsearch集群:在Fleet Server的Web界面中,可以添加要管理和监控的Elasticsearch集群。提供Elasticsearch集群的连接信息,如地址、端口、用户名和密码等。 5. 配置监控和告警:一旦添加了Elasticsearch集群,可以配置监控和告警规则。可以选择预定义的监控指标,也可以自定义监控指标。配置告警规则以便在达到阈值时接收通知。 6. 执行集群管理操作:通过Fleet Server的Web界面,可以执行各种集群管理操作,如创建索引、删除索引、调整集群设置等。可以使用Fleet Server提供的界面或API来执行这些操作。 7. 查看监控数据:Fleet Server会收集和展示Elasticsearch集群的监控数据。可以在Fleet Server的Web界面中查看各种监控指标的图表和数据。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值