Elasitcsearch--解决CPU使用率升高
原文网址:Elasitcsearch--解决CPU使用率升高_IT利刃出鞘的博客-CSDN博客
简介
本文介绍如何解决ES导致的CPU使用率升高的问题。
问题描述
线上环境 Elasticsearch CPU 使用率飙升常见问题如下:

Elasticsearch 使用线程池来管理并发操作的 CPU 资源。Elasticsearch 高 CPU 使用率通常意味着一个或多个线程池不足以支撑业务需求。如果线程池资源耗尽,Elasticsearch 将拒绝与线程池相关的请求。
例如,如果搜索线程池(search thread pool)耗尽,Elasticsearch 将拒绝搜索请求,直到有更多线程可用。

上图更直观的解释了线程池、队列、客户端请求之间的关系,拿检索线程为例:
- 当请求比较少时,线程池完全可以处理过来;
- 当前再多一些时,需要线程池队列排队;
- 如果请求再多,就超出了线程池和队列的最大负载,导致异常报错。
排查 ES 高 CPU 使用率
核查 CPU 使用率
使用 cat nodes API 获取每个节点的当前 CPU 使用率。
GET _cat/nodes?v=true&s=cpu:desc
返回结果:

如上所示,CPU 即为CPU使用率,name为节点的名称。
也可以借助 Kibana Stack Monitoring 进行可视化监控,CPU 监控如下红圈所示:

核查热点线程
如果某个节点的 CPU 使用率很高,请使用节点热点线程 API 检查该节点上运行的资源密集型线程。
GET _nodes/my-node,my-other-node/hot_threads
此 API 以纯文本形式返回任何热点线程的细节。
降低 CPU 使用率的方案
1. 扩展集群
繁重的数据写入(indexing)和搜索负载会耗尽较小的线程池。
为了更好地处理繁重的工作负载,向集群添加更多节点或升级(扩容)现有节点以增加容量。
2. 分散批量请求
批量请求虽然比单个请求效率更高,但大型批量写入或多搜索请求需要大量 CPU 资源。
如果可能,提交较小的请求并在它们之间留出更多时间。
这里的较小有多小?需要结合业务实际、结合线程池和队列大小不断调出最优值。
3.取消长时间运行的搜索
长时间运行的搜索会阻塞搜索线程池中的线程。
要检查这些搜索,请使用任务管理 API。
GET _tasks?actions=*search&detailed
上述命令行的响应包含检索请求及其查询细节,其中:running_time_in_nanos 显示搜索运行了多长时间。
{"nodes" : {"oTUltX4IQMOUUVeiohTt8A" : {"name" : "my-node","transport_address" : "127.0.0.1:9300","host" : "127.0.0.1","ip" : "127.0.0.1:9300","tasks" : {"oTUltX4IQMOUUVeiohTt8A:464" : {"node" : "oTUltX4IQMOUUVeiohTt8A","id" : 464,"type" : "transport","action" : "indices:data/read/search","description" : "indices[my-index], search_type[QUERY_THEN_FETCH], source[{\"query\":...}]","start_time_in_millis" : 4081771730000,"running_time_in_nanos" : 13991383,"cancellable" : true}}}}
}
可以使用 _cancel API 取消任务以释放资源:
POST _tasks/oTUltX4IQMOUUVeiohTt8A:464/_cancel
4.避免耗费资源的搜索
举例:前缀匹配的 wildcard 查询、多重聚合或分桶设置过大的单重聚合都会非常耗费资源。
避免策略包含但不限于:
- 避免脚本 script 检索。
- 少使用:fuzzy、regexp、prefix、wildcard检索
- 避免将 range 检索应用到 text 和 keyword 类型。
- 避免多表关联 Join 类型。
- 使用 index.max_result_window 索引设置降低大小限制。
- 使用 search.max_buckets 集群设置降低允许的聚合桶的最大数量。
- 使用 search.allow_expensive_queries 集群设置禁用耗费资源的查询。
相关文章:
Elasitcsearch--解决CPU使用率升高
原文网址:Elasitcsearch--解决CPU使用率升高_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决ES导致的CPU使用率升高的问题。 问题描述 线上环境 Elasticsearch CPU 使用率飙升常见问题如下: Elasticsearch 使用线程池来管理并发操作的 CPU 资源。…...
vue和jQuery有什么区别
Vue 和 jQuery 是两种不同类型的前端工具,它们有一些显著的区别: Vue 响应式数据绑定:Vue 提供了双向数据绑定和响应式更新的能力,使得数据与视图之间的关系更加直观和易于维护。组件化开发:Vue 鼓励使用组件化的方式…...
[Android] Binder all-in-all
前言: Binder 是一种 IPC 机制,使用共享内存实现进程间通讯,既可以传递消息,也可以传递创建在共享内存中的对象,而Binder本身就是用共享内存实现的,因此遵循Binder写法的类是可以实例化后在进程间传递的。…...
无人零售柜:快捷舒适购物体验
无人零售柜:快捷舒适购物体验 通过无人零售柜和人工智能技术,消费者在购物过程中可以自由选择商品,根据个人需求和喜好查询商品清单。这种自主选择的购物环境能够为消费者提供更加舒适和满意的体验。此外,无人零售柜还具有节约时间…...
Bash script进阶笔记
数组类型 arr(1 2 3) # 最基础的方式声明数组,用小括号(),元素之间逗号分隔 arr([1]10 [2]20 [3]30) # 初始化时指定index declare -a arr(1 2 3) # 用declare -a声明数组,小括号外面可选使用单引号、双引号 declare -a arr‘(1 2 3)’…...
OpenCV图像处理——Python开发中OpenCV视频流的多线程处理方式
前言 在做视觉类项目中,常常需要在Python环境下使用OpenCV读取本地的还是网络摄像头的视频流,之后再调入各种模型,如目标分类、目标检测,人脸识别等等。如果使用单线程处理,很多时候会出现比较严重的时延,…...
webGL开发智慧城市流程
开发智慧城市的WebGL应用程序涉及多个方面,包括城市模型、实时数据集成、用户界面设计等。以下是一个一般性的流程,您可以根据项目的具体需求进行调整,希望对大家有所帮助。 1.需求分析: 确定智慧城市应用程序的具体需求和功能。考…...
Django讲课笔记02:Django环境搭建
文章目录 一、学习目标二、相关概念(一)Python(二)Django 三、环境搭建(一)安装Python1. 从官方网站下载最新版本的Python2. 运行安装程序并按照安装向导进行操作3. 勾选添加到路径复选框4. 完成安装过程5.…...
黑豹程序员-原生JS拖动div到任何地方-自定义布局
效果图 代码html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /…...
<软考高项备考>《论文专题 - 7 论文的项目背景之技术架构》
1 技术架构概况 ➢ 架构前端:HTML ➢ 后端:Java ➢ 数据库: Oracle ➢ 大数据:MapReduce ➢ 人工智能:Python ➢ 物联网:RFID识别,http传输,Java ➢ 开发APP: IOS、Android 2 常用开发语言 序号语言说明1JavaJava是一种跨平台的编程语言,广…...
6.3 C++11 原子操作与原子类型
一、原子类型 1.多线程下的问题 在C中,一个全局数据在多个线程中被同时使用时,如果不加任何处理,则会出现数据同步的问题。 #include <iostream> #include <thread> #include <chrono> long val 0;void test() {for (i…...
智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MA…...
BERT、GPT学习问题个人记录
目录 1. 为什么过去几年大家都在做BERT, 做GPT的人少。 2. 但最近做GPT的多了以及为什么GPT架构的scaling(扩展性)比BERT好。 3.BERT是否可以用来做生成,如果可以的话为什么大家都用GPT不用BERT. 4. BERT里的NSP后面被认为是没用的&#x…...
HeartBeat监控Mysql状态
目录 一、概述 二、 安装部署 三、配置 四、启动服务 五、查看数据 一、概述 使用heartbeat可以实现在kibana界面对 Mysql 服务存活状态进行观察,如有必要,也可在服务宕机后立即向相关人员发送邮件通知 二、 安装部署 参照章节:监控组件…...
软件开发经常出现的bug原因有哪些
软件开发中出现bug的原因是多方面的,这些原因可能涉及到开发流程、人为因素、设计问题以及其他一系列因素。以下是一些常见的导致bug的原因: 1. 错误的需求分析: 不正确、不完整或者模糊的需求分析可能导致开发人员误解客户的需求࿰…...
代码随想录27期|Python|Day15|二叉树|层序遍历|对称二叉树|翻转二叉树
本文图片来源:代码随想录 层序遍历(图论中的广度优先遍历) 这一部分有10道题,全部可以套用相同的层序遍历方法,但是需要在每一层进行处理或者修改。 102. 二叉树的层序遍历 - 力扣(LeetCode) 层…...
鸿蒙开发组件之Web
一、加载一个url myWebController: WebviewController new webview.WebviewControllerbuild() {Column() {Web({src: https://www.baidu.com,controller: this.myWebController})}.width(100%).height(100%)} 二、注意点 2.1 不能用Previewer预览 Web这个组件不能使用预览…...
成绩分析。
成绩分析 题目描述 小蓝给学生们组织了一场考试,卷面总分为 100分,每个学生的得分都是一个0到100的整数。 请计算这次考试的最高分、最低分和平均分 输入描述 输入的第一行包含一个整数n(1n104),表示考试人数。 接下来n行,每行包含…...
Excel实现字母+数字拖拉自动递增,步长可更改
目录 1、带有字母的数字序列自增加(步长可变) 2、仅字母自增加 3、字母数字同时自增 1、带有字母的数字序列自增加(步长可变) 使用Excel通常可以直接通过拖拉的方式,实现自增数字…...
Java之Stream流
一、什么是Stream流 Stream是一种处理集合(Collection)数据的方式。Stream可以让我们以一种更简洁的方式对集合进行过滤、映射、排序等操作。 二、Stream流的使用步骤 先得到一条Stream流,并把数据放上去利用Stream流中的API进行各种操作 中间…...
I2C总线协议实战:从零开始用Verilog实现一个I2C主设备(附完整代码)
I2C总线协议实战:从零开始用Verilog实现一个I2C主设备(附完整代码) 在嵌入式系统和FPGA开发中,I2C总线因其简单的两线制结构和灵活的多主设备支持,成为最常用的串行通信协议之一。本文将带您从零开始,用Ver…...
7个高效步骤:Meshroom开源三维重建工具从入门到精通
7个高效步骤:Meshroom开源三维重建工具从入门到精通 【免费下载链接】Meshroom 3D Reconstruction Software 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 技术原理:三维重建的底层逻辑与技术选型 摄影测量技术的数学基础 三维重建技…...
GIL下的隐性内存竞争:多线程Python服务内存占用翻倍的底层机制(含perf火焰图验证)
第一章:Python 智能体内存管理策略 避坑指南Python 的内存管理看似“全自动”,实则暗藏诸多隐性陷阱——对象引用计数异常、循环引用导致的延迟回收、大对象驻留引发的内存碎片,以及多线程环境下 gc 模块行为不一致等问题,常在高并…...
4步轻松搞定Windows系统优化:Win11Debloat让你的电脑重获新生
4步轻松搞定Windows系统优化:Win11Debloat让你的电脑重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter…...
通过信道优化数据传输的通信链路的实现附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...
Mysql 02:集合函数(聚合函数)查询全解——COUNT/SUM/AVG/MAX/MIN 实战指南
在 MySQL 中,集合函数(也叫聚合函数) 是对一组数据进行统计计算的核心工具,常用于数据汇总、报表生成、分组统计等场景。本文将围绕图片中的 5 大核心集合函数,从语法、用法、代码示例三个维度,带你彻底掌握…...
我的上课记
...
002:RAG 入门-LangChain 读取文本
正文 异步/等待解决了什么问题? 在传统同步I/O操作中(如文件读取或Web API调用),调用线程会被阻塞直到操作完成。这在UI应用中会导致界面冻结,在服务器应用中则造成线程资源的浪费。async/await通过非阻塞的异步操作解…...
如何高效解决Windows驱动存储臃肿问题?DriverStore Explorer带来75-90%的空间释放效率提升
如何高效解决Windows驱动存储臃肿问题?DriverStore Explorer带来75-90%的空间释放效率提升 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统随着使用时间增…...
洛雪音乐音源项目终极指南:如何免费获取全网高品质音乐资源
洛雪音乐音源项目终极指南:如何免费获取全网高品质音乐资源 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否曾为寻找免费的高品质音乐资源而烦恼?或者厌倦了在多个音…...
