记一次CPU飚高以及排查过程

news2024/9/29 4:02:56

一.cpu突然飚高

收到系统频发的cpu超过90%的告警.虽然是在非线上环境出现.接到告警后第一反应还是去重启了机器,重启后cpu如期的下降了下来.以为能高枕无忧,不过一会儿还是收到了告警.

二.排查

2.1 top 指令查看物理机进程id

申请了堡垒机权限登上机器 top指令后.如下确实发现进程为623的机器cpu一直在高位,但内存不是很高.
从Command 列发现,确实是该java进程 623.顺带需要注意下User列用户为admin用户启动的该进程,那么在后续对该进程的一些操作尽量是切到admin用户上来操作,防止出现权限不足.su命令.

在这里插入图片描述

2.2 查看进程下各线程情况 top-H -p 623

通过这个命令可以查看到该进程下所有线程的具体执行情况,执行后发现并没有非常突出的占用cpu高的线程存在.这就很诡异了,我们并没有很高cpu占用的线程在执行.反而出现了cpu飚高.很纳闷,继续往下再看看这些线程到底在做什么事情.

在这里插入图片描述

2.3 指定其中一个线程查看具体的执行情况

2.3.1 先将指定的线程转换为16进制,而后使用jstack查看具体的线程执行情况,如下为例


printf "%x\n" tid 
jstack pId | grep -A 行数

在这里插入图片描述
通过具体的jstack命令,可以看到具体的代码行执行的堆栈调用情况.发现很多线程都是如上的情况,其中为binlog同步消费的查询数据库的操作.回想到最近的需求.我们做了一个多商品多门店下发到店品的操作.这个操作在1000*1000的场景下就回出现100w的数据写入.写入后触发binlog,binlog再从mq进行消费同步写入到es.所以才会出现在重启之后短暂的cpu下降,后续启动过后mq再次消费重新触发导致上述线程不断的进行数据库IO以及彼此之间竞争cpu导致cpu飚高.

三.解决

由于上述的问题本质上还是由于产品需求导致,而在开发过程中.我们又使用了多线程.多线程在队列等待时也会去竞争cpu资源,这一层已经出现了很多cpu压力,后续的binlogmq消费进一步的数据库io和线程切换导致了cpu雪崩.所以优先的方案还是限制了多线程等待队列的数量,从源头优先控制竞争队列大小.

private AtomicLong THREAD_NUM = new AtomicLong(0);

通过AutomicLong 来手动控制多线程队列流速,源头控制竞争队列大小.最后顺利解决
在这里插入图片描述

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

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

相关文章

微服务,Docker, k8s,Cloud native 云原生的简易发展史

微服务发展史 2005年:Dr. PeterRodgers在Web ServicesEdge大会上提出了“Micro-Web-Services”的概念。2011年:一个软件架构工作组使用了“microservice”一词来描述一种架构模式。2012年:同样是这个架构工作组,正式确定用“micr…

万字详解 C 语言文件操作

目录 一、什么是文件? 1.1 - 文件和流的基本概念 1.2 - 文件的分类 1.3 - 文件名 二、缓冲文件系统和非缓冲文件系统 三、文件指针类型 四、文件的打开和关闭 4.1 - fopen 4.2 - fclose 五、文件的顺序读写 5.1 - 字符输出函数 fputc 5.2 - 字符输入函数…

【Kubernetes 企业项目实战】06、基于 Jenkins+K8s 构建 DevOps 自动化运维管理平台(上)

目录 一、k8s 助力 DevOps 在企业落地实践 1.1 传统方式部署项目为什么发布慢,效率低? 1.2 上线一个功能,有多少时间被浪费了? 1.3 如何解决发布慢,效率低的问题呢? 1.4 什么是 DevOps? …

【JavaScript】原型链

文章目录构造函数原型对象访问机制内置构造函数一切皆对象原型链构造函数 - 本质还是一个函数- 和 new 关键字连用- 特点1. 自动创建一个对象2. 自动返回一个对象3. 让函数的this指向这个对象 书写构造函数的时候1. 属性写在函数内2. 方法写在原型上构造函数的不合理 把方法写在…

Android studio 护眼模式配置、字体大小设置、内存大小设置等各类疑难杂症

Android studio 4.1 1、左边目录栏颜色配置: 2、代码编辑区域背景色设置 3、控制台背景色设置 4、菜单栏、工具栏、左边栏字体大小设置 5、编码区字体大小设置 6、修改内存大小、显示内存 例如:修改android-studio/bin/studio.vmoptions studio64.vmop…

NANK南卡护眼台灯Pro评测,护眼台灯天花板般存在!

现代大环境下,生活节奏和压力的不断加快加重,如今的手机、电脑屏幕以及长时间的工作学习都会出现用眼过度的问题,久而久之,各种眼睛刺痛、干涩、肿胀等近视问题接踵而至。为了保障自己的健康,近些年,人们纷…

回归预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入单输出

回归预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入单输出 目录回归预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入单输出预测效果基本介绍模型描述程序设计参考文献预测效果 基本介绍 MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入单输出。 1 .data为…

基础课程11:调试工具

目标 有时事情不会按照预期进行,从总线(如果有的话)检索到的错误消息不能提供足够的信息。幸运的是,GStreamer附带了大量调试信息,这些信息通常会提示问题可能是什么。本教程展示了: 如何从GStreamer获取更多调试信息。 如何将自己的调试信…

电力电子器件简介

文章目录1、二极管2、BJT3、晶闸管(SCR)4、TRIAC5、GTO(全控器件)6、功率MOSFET(开关速度快、电压驱动更容易)7、IGBT8、总结![在这里插入图片描述](https://img-blog.csdnimg.cn/1d309b3d449040788c6437f8…

【胖虎的逆向之路】04——脱壳(一代壳)原理脱壳相关概念详解

【胖虎的逆向之路】04——脱壳(一代壳)原理&脱壳相关概念详解 【胖虎的逆向之路】01——动态加载和类加载机制详解 【胖虎的逆向之路】02——Android整体加壳原理详解&实现 【胖虎的逆向之路】03——Android一代壳脱壳办法&实操 文章目录【…

高速路如何避免ETC车辆漏计问题,ETC通道出入车辆校准看板

人群密集场所事故预防措施和应急管理方案的制定,对每一个交通枢纽和大型社会活动场所都显得尤为重要。对于交通管理部门来说,获取准确、可靠的交通数据已经变得越来越重要。 所以呢,ETC出入车辆校准看板是必要的。ETC出入车辆校准看板&#x…

如何使用路由策略解决 ISIS与OSPF双点双向产生的次优路径、环路隐患?

3.1.0 如何使用路由策略解决 ISIS与OSPF双点双向产生的次优路径、环路隐患 一、双点双向中的次优路径解决方法 双点双向中由于默认路由优先级造成次优路径的产生,而解决的方法就是修改路由优先级。 双点双向错误的解决方法 关于修改路由优先级,需要注…

2022 医疗卫生行业应急响应形势分析报告 脱敏板

声明 本文是学习2022医疗卫生行业网络安全分析报告. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 医疗卫生行业应急响应形势分析 2021年1-12月,奇安信集团安服团队共参与和处置全国范围内医疗卫生行业网络安全应急响应事件84起&#xf…

is not defined at HTMLInputElement.onclick

vue项目中一小部分功能想要使用原生的onclick 事件,发现报错Uncaught ReferenceError: 函数名 is not defined at HTMLInputElement.onclick搜索了相关blog,得出结论是onclick事件调用的方法必须是全局变量或者说是window的方法解决方法:将cl…

leetcode:43. 字符串相乘(附加一些C++string其他小练习)

目录 一.leetcode:43. 字符串相乘 1.问题描述 2.问题分析 3.问题求解 二. leetcode:541. 反转字符串 II 1.问题描述 2.题解 三. leetcode:125. 验证回文串 1.问题描述 2.双指针法求解 一.leetcode:43. 字符串相乘 43…

数据结构(括号匹配与表达式计算)

目录 括号配对 括号匹配算法 表达式计算 后缀式的计算 中缀式转后缀式 括号配对 编译器做语法检查的任务之一是检查符号是否配对,最简单的符号匹配问题是括号是否匹配,如开括号( 及{ 后面必须依次跟随相应的闭括号 }及 )。 如下段程序中的括号、引号…

谷歌竞价账户效果不好的原因?

很多外贸企业喜欢用谷歌竞价来推广自己的网站,提升自己的竞争力。是一种能很快看到效果的宣传方式。但是很多公司在谷歌竞价上投入了大量的资金,却收效甚微。为什么?下面我们来看看如何解决我们在google竞价推广中会遇到的一些问题。很多人在…

Linux的文件权限理解

目录 前言 1、用户、用户组、其他人 1.1用户、用户组、其他人之间的概念理解 1.2Linux系统中有用户身份与用户组记录的文件 2、Linux文件权限概念 第一列 第二列 第三列 第四列 第五列 第六列 第七列 Linux文件权限的重要性 3、Linux的目录与文件的权限意义 权限…

计算机图形学 第5章 二维变换与裁剪到Cohen-Sutherland直线裁剪算法

目录学习目标前驱知识规范化齐次坐标二维几何变换矩阵物体变换与坐标变换二维几何变换二维图形基本几何变换矩阵平移变换矩阵比例变换矩阵旋转变换矩阵反射变换矩阵错切变换矩阵二维仿射变换二维复合变换相对于任意方向的二维几何变换二维图形裁剪世界坐标系2.用户坐标系观察坐…

VSCode中设置Python语言自动格式化的方案

安装Python扩展 在VSCode的扩展(Externsions)中使用下面命令检索Python扩展 category:debuggers Python 打开一个Python文件,可以在VSCode的右下角看到运行环境。 安装PEP8 python3.10 -m pip install -U autopep8 安装Flake8 python3.10 …