当前位置: 首页 > news >正文

Elasitcsearch--解决CPU使用率升高

原文网址:Elasitcsearch--解决CPU使用率升高_IT利刃出鞘的博客-CSDN博客

简介

本文介绍如何解决ES导致的CPU使用率升高的问题。

问题描述

线上环境 Elasticsearch CPU 使用率飙升常见问题如下:

Elasticsearch 使用线程池来管理并发操作的 CPU 资源。Elasticsearch 高 CPU 使用率通常意味着一个或多个线程池不足以支撑业务需求。如果线程池资源耗尽,Elasticsearch 将拒绝与线程池相关的请求。

例如,如果搜索线程池(search thread pool)耗尽,Elasticsearch 将拒绝搜索请求,直到有更多线程可用。

上图更直观的解释了线程池、队列、客户端请求之间的关系,拿检索线程为例:

  1. 当请求比较少时,线程池完全可以处理过来;
  2. 当前再多一些时,需要线程池队列排队;
  3. 如果请求再多,就超出了线程池和队列的最大负载,导致异常报错。

排查 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 查询、多重聚合或分桶设置过大的单重聚合都会非常耗费资源。

避免策略包含但不限于:

  1. 避免脚本 script 检索。
  2. 少使用:fuzzy、regexp、prefix、wildcard检索
  3. 避免将 range 检索应用到 text 和 keyword 类型。
  4. 避免多表关联 Join 类型。
  5. 使用 index.max_result_window 索引设置降低大小限制。
  6. 使用 search.max_buckets 集群设置降低允许的聚合桶的最大数量。
  7. 使用 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识别&#xff0c;http传输&#xff0c;Java ➢ 开发APP: IOS、Android 2 常用开发语言 序号语言说明1JavaJava是一种跨平台的编程语言&#xff0c;广…...

6.3 C++11 原子操作与原子类型

一、原子类型 1.多线程下的问题 在C中&#xff0c;一个全局数据在多个线程中被同时使用时&#xff0c;如果不加任何处理&#xff0c;则会出现数据同步的问题。 #include <iostream> #include <thread> #include <chrono> long val 0;void test() {for (i…...

智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MA…...

BERT、GPT学习问题个人记录

目录 1. 为什么过去几年大家都在做BERT, 做GPT的人少。 2. 但最近做GPT的多了以及为什么GPT架构的scaling&#xff08;扩展性&#xff09;比BERT好。 3.BERT是否可以用来做生成&#xff0c;如果可以的话为什么大家都用GPT不用BERT. 4. BERT里的NSP后面被认为是没用的&#x…...

HeartBeat监控Mysql状态

目录 一、概述 二、 安装部署 三、配置 四、启动服务 五、查看数据 一、概述 使用heartbeat可以实现在kibana界面对 Mysql 服务存活状态进行观察&#xff0c;如有必要&#xff0c;也可在服务宕机后立即向相关人员发送邮件通知 二、 安装部署 参照章节&#xff1a;监控组件…...

软件开发经常出现的bug原因有哪些

软件开发中出现bug的原因是多方面的&#xff0c;这些原因可能涉及到开发流程、人为因素、设计问题以及其他一系列因素。以下是一些常见的导致bug的原因&#xff1a; 1. 错误的需求分析&#xff1a; 不正确、不完整或者模糊的需求分析可能导致开发人员误解客户的需求&#xff0…...

代码随想录27期|Python|Day15|二叉树|层序遍历|对称二叉树|翻转二叉树

本文图片来源&#xff1a;代码随想录 层序遍历&#xff08;图论中的广度优先遍历&#xff09; 这一部分有10道题&#xff0c;全部可以套用相同的层序遍历方法&#xff0c;但是需要在每一层进行处理或者修改。 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 层…...

鸿蒙开发组件之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这个组件不能使用预览…...

成绩分析。

成绩分析 题目描述 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100分&#xff0c;每个学生的得分都是一个0到100的整数。 请计算这次考试的最高分、最低分和平均分 输入描述 输入的第一行包含一个整数n(1n104)&#xff0c;表示考试人数。 接下来n行&#xff0c;每行包含…...

Excel实现字母+数字拖拉自动递增,步长可更改

目录 1、带有字母的数字序列自增加&#xff08;步长可变&#xff09; 2、仅字母自增加 3、字母数字同时自增 1、带有字母的数字序列自增加&#xff08;步长可变&#xff09; 使用Excel通常可以直接通过拖拉的方式&#xff0c;实现自增数字&#xf…...

Java之Stream流

一、什么是Stream流 Stream是一种处理集合&#xff08;Collection&#xff09;数据的方式。Stream可以让我们以一种更简洁的方式对集合进行过滤、映射、排序等操作。 二、Stream流的使用步骤 先得到一条Stream流&#xff0c;并把数据放上去利用Stream流中的API进行各种操作 中间…...

别再手动写矩阵运算了!C++项目里用Eigen库的正确姿势(附性能对比)

别再手动写矩阵运算了&#xff01;C项目里用Eigen库的正确姿势&#xff08;附性能对比&#xff09; 在计算机视觉、机器人控制或物理仿真领域&#xff0c;C开发者经常需要处理复杂的矩阵运算。我曾见过一个SLAM项目的前端代码&#xff0c;仅为了计算两个坐标系之间的变换矩阵&a…...

高性能PDF文本提取引擎:基于Poppler C++的pdftotext架构解析与性能优化实践

高性能PDF文本提取引擎&#xff1a;基于Poppler C的pdftotext架构解析与性能优化实践 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 在当今数字化办公环境中&#xff0c;PDF文档作为信息交换的标准格式…...

ElevenLabs法语情感语音合成黑盒拆解:如何通过prosody token注入实现“巴黎左岸咖啡馆式”自然停顿与语调起伏?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs法语情感语音合成黑盒拆解&#xff1a;核心动机与技术定位 ElevenLabs 的法语语音合成能力并非简单地将英文模型适配至法语&#xff0c;而是依托多语言联合训练、音素级韵律建模与情感嵌入向…...

153.YOLOv8 从数据集下载到 ONNX 部署

摘要 目标检测是计算机视觉领域的核心任务之一,YOLO系列算法凭借其单阶段检测架构和实时推理能力,成为工业界部署的首选方案。本文从零开始,系统讲解YOLOv8的完整使用流程,涵盖环境搭建、数据集构建、模型训练、评估与部署全链路。所有代码均基于Ultralytics官方库,提供可…...

开源项目脚手架工具:从零到一快速构建标准化项目

1. 项目概述&#xff1a;当开源遇上“锻造”在开源的世界里&#xff0c;我们常常面临一个看似简单实则棘手的问题&#xff1a;如何将一个灵光一现的想法&#xff0c;或者一个内部使用的工具&#xff0c;快速、规范地“锻造”成一个真正意义上的开源项目&#xff1f;这不仅仅是把…...

【独家首发】Midjourney像素艺术训练数据集反向推演报告:基于12,843张高质量样本的风格迁移规律白皮书

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney像素艺术风格的定义与边界判定 像素艺术&#xff08;Pixel Art&#xff09;在 Midjourney 中并非原生风格类别&#xff0c;而是一种通过提示词工程、参数约束与后处理协同达成的视觉范式。其…...

【故障诊断】DSCNN-HA-TL:融合Swin窗口注意力和全局注意力机制的变工况轴承故障诊断(迁移学习/小样本)

在工业旋转机械中&#xff0c;滚动轴承是最关键、也最容易发生故障的部件之一。然而&#xff0c;变工况、故障样本稀缺、跨域泛化能力差三大难题&#xff0c;长期制约着故障诊断模型的落地效果。 近期&#xff0c;来自河北工程大学、天津大学等机构的研究团队提出了一种全新的…...

如何用MAA自动化助手彻底解放你的《明日方舟》游戏时间:5个实用技巧

如何用MAA自动化助手彻底解放你的《明日方舟》游戏时间&#xff1a;5个实用技巧 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址…...

从一次安全扫描报告说起:聊聊SSH Banner泄露那些事儿,以及比修改Banner更重要的安全习惯

从SSH版本泄露看现代安全防御&#xff1a;工程师的深度实践指南 那天下午&#xff0c;我正在整理新部署的云服务器集群的安全扫描报告&#xff0c;一个看似"古老"的漏洞引起了我的注意——CVE-1999-0634&#xff0c;SSH版本信息可被获取。这个诞生于上世纪的安全问题…...

基于MCP协议构建Azure DevOps智能助手:连接AI与开发运维的实践指南

1. 项目概述&#xff1a;一个连接开发与运维的智能“翻译官”如果你和我一样&#xff0c;长期在Azure DevOps的流水线、看板和代码仓库里打转&#xff0c;同时又对新兴的AI编程助手&#xff08;比如Claude、Cursor&#xff09;爱不释手&#xff0c;那你肯定遇到过这样的困境&am…...