28-一些常见的内存问题

news/2024/11/16 13:48:45/

诊断内存状况

● 查看各个节点的内存状况

  • GET _cat/nodes?v
  • GET _nodes/stats/indices?pretty
  • GET _cat/nodesv&h=name,queryCacheMemory,queryCacheEvictions,requestCacheMemory,requestCacheHitCount,request_cache.miss_count
  • GET _cat/nodesh=name,port,segments.memory,segments.index_writer_memory,fielddata.memory_size,query_cache.memory_size,request_cache.memory_size&v

一些常见的内存问题

● Segments 个数过多,导致 full GC

现象:集群整体响应缓慢,也没有特别多的数据读写。但是发现节点在持续进行 Full GC

分析:查看 Elasticsearch 的内存使用,发现 segments.memory 占用很大空间

解决:通过 force merge,把 segments 合并成一个。

建议:对于不在写入和更新的索引,可以将其设置成只读。同时,进行 force merge 操作。如果问题依然存在,则需要考虑扩容。此外,对索引进行 force merge ,还可以减少对 global_ordinals 数据结构的构建,减少对 fielddata cache 的开销

● Field data cache 过大,导致 full GC

现象:集群整体响应缓慢,也没有特别多的数据读写。但是发现节点在持续进行 Full GC

分析:查看 Elasticsearch 的内存使用,发现 fielddata.memory.size 占用很大空间。同时, 数据不存在写入和更新,也执行过 segments merge。

解决:将 indices.fielddata.cache.size 设小,重启节点,堆内存恢复正常

建议:Field data cache 的构建比较重,Elasticsearch 不会主动释放,所以这个值应该设置 的保守一些。如果业务上确实有所需要,可以通过增加节点,扩容解决

● 复杂的嵌套聚合,导致集群 full GC

现象:节点响应缓慢,持续进行 Full GC

分析:导出 Dump 分析。发现内存中有大量 bucket 对象,查看 日志,发现复杂的嵌套聚合

解决:优化聚合

建议:在大量数据集上进行嵌套聚合查询,需要很大的堆内存来完成。如果业务场景确实需要。 则需要增加硬件进行扩展。同时,为了避免这类查询影响整个集群,需要设置 Circuit Breaker 和 search.max_buckets 的数值


http://www.ppmy.cn/news/1547461.html

相关文章

AIGC行业现在适合进入吗?

AIGC行业现在适合进入吗? 引言 在信息时代的浪潮中,人工智能的崛起让我们看到了全新的机会,特别是在内容创作领域。AIGC(人工智能生成内容)技术正如一位全能的助手,悄然进入了我们的生活和工作。你是否曾…

【笔记】关于git和GitHub和git bash

如何推送更新的代码到github仓库 如何在此项目已经提交在别的远程仓库的基础上更改远程仓库地址(也就是换一个远程仓库提交) 如何删除github中的一个文件 第二版 删除github上的一个仓库或者仓库里面的某个文件_github仓库删除一个文件好麻烦-CSDN博客 …

读书笔记:《Redis设计与实现》之发布订阅

发布与订阅简介 命令 SUBSCRIBE: 订阅一个频道 SUBSCRIBE channel [channel ...]SUBSCRIBE: 向一个频道发送信息 PUBLISH channel messageUNSUBSCRIBE: 取消订阅一个频道 UNSUBSCRIBE [channel [channel ...]]PSUBSCRIBE:订阅一个或多给定模式的频道 PSUBSCRIBE pattern …

Linux 进程信号初识

目录 0.前言 1.什么是信号 1.1生活中的信号 1.2 OS中的信号 2.认识信号 2.1信号概念 2.2查看信号 2.3 signal函数 2.4代码示例 3. 信号处理方式 3.1 忽略信号 3.2 默认处理 3.3 自定义处理 4.小结 (图像由AI生成) 0.前言 在之前的学习中,我…

SHELL脚本编写基础(2)永久环境变量和字符串显位

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

M4 lotus 源码编译安装

查看系统版本 sw_vers ProductName: macOS ProductVersion: 15.1安装依赖 xcode-select -p /Library/Developer/CommandLineToolsbrew install go jq pkg-config hwloc coreutilscurl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh设置环境变量 export LIBRARY…

直接映射缓存配置

对于一个直接映射(Direct-Mapped)缓存,其缓存总大小为16字节,而每条cache line的大小为4字节,可以理解为以下几个方面: 1. 缓存结构 缓存大小(Cache Size):整个缓存空间…

Ceph 中Crush 算法的理解

Crush(Controlled Replication Under Scalable Hashing)算法是一种可扩展的、分布式的副本数据放置算法,广泛用于存储系统中,特别是Ceph分布式存储系统中。以下是对CRUSH算法的详细解释: 一、算法原理 CRUSH算法根据…