Elasticsearch-高CPU优化

news2024/10/7 2:24:43

ES 高CPU会导致:

  • 吞吐量下降
  • 查询响应时间增加
  • 慢查询数增加

谁占用了CPU

  • us:user time,表示 CPU 执行用户进程的时间。(各种逻辑运算,函数,排序,复杂相关性计算,密集数据插入等等)
  • sy:system time,表示 CPU 在内核运行的时间。
  • wa:waiting time,表示 CPU 在等待 IO 操作完成所花费的时间。
  • hi&si:hard IRQ time,表示系统处理硬中断所花费的时间,soft IRQ time,表示系统处理软中断所花费的时间。
  • id:idle time,表示系统处于空闲期,等待进程运行。

sy,hi&si 是操作系统层面的cpu消耗,不是我们重点优化对象。id是空闲cpu,不需要关注。下面重点聊一下uswa。

如何减少CPU消耗

减少等待

提升IO处理能力

  • 加磁盘提升IO并发能力
  • 升级SSD
  • 合理分片提升并发能力,每个分片都是一个 Lucene 索引实例。集群总分片数建议控制在5w以内,单个索引的规模控制在 1TB 以内,单个分片大小控制在30 ~ 50GB。分片的数量通常建议小于或等于ES 的数据节点数量,最大不超过总节点数的2倍。确保对于节点上已配置的每个 GB的内存,将分片数量保持在 20 以下,如果某个节点拥有 30GB 的堆内存,那其最多可有 600 个分片。 参考:我在 Elasticsearch 集群内应该设置多少个分片? | Elastic Blog

减少IO量

  • 只返回需要的字段:只返回需要的字段,减少IO量。
  • 缓存:尽量使用filter代替must,filter满足一定条件会走Node Query Cache。Elasticsearch-内存结构_es查看当前运行内存-CSDN博客
  • 升级内存:升级内存可以提升缓存的数据量。建议设置内存:节点要存储的数据比例,搜索类比例:1:16,日志类比例:1:48-1:96。
  • 减少索引量:不需要查询的字段index设置成false,减少倒排索引大小。
  • 设置routing key:避免全分区查询。
  • 只存需要查询的字段:_source是压缩单字段存储,只存需要的字段以减少OS缓存量。
  • 减少查询量:规避prefix,wildcard等查询,匹配词比较多。
  • 减少单位时间写入量:大量密集写入改成渐进的写入策略。

减少计算

  • doc_values:开启doc_values提升聚合和排序性能(走_source需要解压缩)。
  • store:单字段查询场景可以设置字段store:true(走_source需要解压缩)。
  • 减少GC:调整内存参数,减少young gc 和 full gc次数。
  • 减少耗CPU查询:script_score,function_score, regexp等等查询。

分析高CPU

查看请求量

查看查询/写请求量,分析是否cpu高和查询量升高或者写入量升高导致的。

如图所示,查询请求量的波动与集群最大CPU使用率是基本吻合的。基本可以确定是增加的查询导致,发现了问题所在,进一步确认则需要开启集群的慢日志收集,可以参考官方文档:集群日志说明。从慢日志中,我们可以得到更多信息。比如引起慢查询的索引、查询参数以及内容。

查看hot_threads

Elasticsearch使用线程池管理CPU资源,用于并发操作。高CPU使用率通常意味着一个或多个线程池运行不足。如果某个节点的CPU使用率很高,可以使用该节点的热线程API(hot_threads)来检查节点上运行的资源密集型线程。

// 获取集群中各节点的cpu信息
GET _cat/nodes?v=true&s=cpu:desc

// 查看热线程
GET _nodes/my-node,my-other-node/hot_threads

// 查看正在运行中的任务,返回结果字段running_time_in_nanos表示sql运行时长单位纳秒
GET _tasks?actions=*search&detailed

// 取消任务
POST _tasks/my-task-id/_cancel

参考:High CPU usage | Elasticsearch Guide [8.14] | Elastic

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTF-pwn-虚拟化-qemu前置知识

文章目录 参考地址相关交互相关配置相关调试待完善(以后做题用到啥再加吧) 参考 https://xz.aliyun.com/t/6562?time__1311n4%2bxnD0DRDBAiGkDgiDlhjmYh2xuCllx7whD&alichlgrefhttps://www.bing.com/#toc-3 地址相关 每个qemu虚拟机都是宿主机上…

springboot3 连接 oceanbase + logproxy数据同步到redis

我这用的是 社区版的 单机, rocky liunx 安装oceanbase 注意事项: logproxy 是 CDC 模式 , springboot 可以直接订阅 canal 是 binlog模式, canal 订阅 logproxy, springboot 订阅 canal logproxy 也可以转 bi…

学校教育为什么要选择SOLIDWORKS教育版?

在数字化和智能化时代,学校教育正面临着挑战与机遇。为了培养具备创新能力和实践技能的新时代人才,学校教育需要引入先进的教学工具和资源。SOLIDWORKS教育版作为一款专为教育和培训目的而设计的软件,以其全方面的功能、友好的用户界面、丰富…

在自托管基础设施上使用 GitOps 部署 MinIO

基于MinIO Weaviate Python GitOps探索的见解,本文探讨了如何增强软件部署流程的自动化。 通过将 GitHub Actions 与 Docker Swarm 集成而产生的协同作用,以自托管基础架构的稳健性为基础,标志着 CI/CD 实践的关键进步。这种方法不仅利用了软…

索尼MXF文件断电变2G恢复方法(PXW-Z280V)

PXM-Z280V算是索尼比较经典的机型,也是使用MXF文件格式的机型之一。近期接到很多例索尼MXF量突然不正常的案例(如变成512字节或者2G),下面来看下这个案例。 故障存储: 128G存储卡 /文件系统:exFAT 故障现象: 客户反…

《数据结构与算法基础》——1.2基本概念和术语

一、本章结构 二、四个数据相关专业名词的解释 两者的区别 三、数据结构相关内容 四、逻辑结构的分类 五、存储结构的分类及四种基本存储结构 六、数据类型和抽象数据类型

跑通并使用Yolo v5的源代码并进行训练—目标检测

跑通并使用Yolo v5的源代码并进行训练 摘要:yolo作为目标检测计算机视觉领域的核心网络模型,虽然到24年已经出到了v10的版本,但也很有必要对之前的核心版本v5版本进行进一步的学习。在学习yolo v5的时候因为缺少论文所以要从源代码入手来体验…

JavaScript的学习之旅之基本数据类型

目录 一、字面量(常量)和变量 二、标识符 三、数据类型 1.String类型 2.Number类型 四、布尔值类型 五、Null和Undefined类型 一、字面量(常量)和变量 字面量:不可变的数据,一般位于等式的右边 变量&…

注册安全分析报告:PingPong

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

深度剖析现阶段的多模态大模型做不了医疗

导读 在人工智能的这波浪潮中,以ChatGPT为首的大语言模型(LLM)不仅在自然语言处理(NLP)领域掀起了一场技术革命,更是在计算机视觉(CV)乃至多模态领域展现出了令人瞩目的潜力。 这些…

芯片制作流程

1、系统需求-》设计-》光罩-》芯片制造-》检测-》封装-》测试。 光罩-》光阻涂布-》曝光-》显影和烘烤-》刻蚀-》等离子体去胶-》湿法刻蚀 化学机械研磨-》薄膜沉积-》制作金属薄膜-》化学气相沉积-》离子注入

探索序列到序列模型:了解编码器和解码器架构的强大功能

目录 一、说明 二、什么是顺序数据? 三、编码器解码器架构的高级概述: 3.1 编码器和解码器架构的简要概述: 3.2 训练机制:编码器和解码器架构中的前向和后向传播: 四、编码器解码器架构的改进: 4.1.…

王老吉“杀疯啦”?传统品牌如何创新营销“破圈”而出

好像现在年轻人都不热衷喝凉茶更偏爱咖啡了,没关系,王老吉带着“冰中式”向你走来了。 四月底,王老吉和肯德基K咖啡联名,推出了王老吉风味的气泡美式。可能乍一听觉得奇奇怪怪,而后细想,凉茶味儿的咖啡&am…

QListWidget、QMenu、Action、customContextMenuRequested

QListWidget的初始化、清空、Append添加、Insert添加、删除item QListWidget的事件的使用 QToolBox的使用,每个Page可以添加其他控件 QToolBar使用代码添加QMenu,QMenu添加3个Action QToolButton绑定Action 布局 其中 QSplitter比较特殊, 允许在水平或垂…

S32K3 工具篇1:新手如何安装S32DS RTD4_0_0

S32K3 工具篇1:新手如何安装S32DS RTD4_0_0 一, 软件下载1.1 RTD 下载1.2 S32DS IDE 和 更新包 下载1.3 S32K3XX development 包下载 二, 软件安装2.1 安装S32DS IDE2.2 安装 IDE update,development,RTD 三&#xff0…

Python 修炼|人人编程手册|001 计算思维

在微信中阅读,关注公众号:CodeFit。 > 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 1. 计算思维 在我们正式开启 Python 修炼之旅前,先来了解一个关键的概念 —— 计算思维。 计算思维,其核心本质在于 抽象 …

python eval 函数和 json 对象的使用

注意: 1、python 不支持 switch 语句,所以多个条件判断分支的写法只能用 if 2、elif 对应 Java 中的 else if 3、python 编写的程序代码都是自上而下执行,除非代码控制,不然不会改变 4、需要注意代码层级,如果层级不对…

Mentor Xpedition怎么切换中英文界面

1、Mentor Xpedition的Layout界面,切换中英文的方法如下图; 切换英文设置,设置系统环境变量:MGC_PCB_LANGUAGEEnglish,重新打开软件即可切换成中文界面; 如果想要在切换成中文,把标量值改为Chi…

七连发吴谨言专访揭秘

七连发!吴谨言专访揭秘,薛芳菲魅力再升级在娱乐圈的繁星中,总有那么一些独特的光芒,她们用才华和魅力照亮前行的道路。近日,备受瞩目的“六公主”平台连续发布了七条关于吴谨言的专访,引发了广大网友的热烈…

Java——访问修饰符

一、访问修饰符是什么 Java中的访问修饰符用于控制类、接口、构造函数、方法和数据成员(字段)的可见性和访问级别。 Java提供了四种访问修饰符: 访问修饰符同一类内同一包内不同包的子类不同包的非子类适用对象public可见可见可见可见类、…