如何定位当生产环境CPU飙升的时候的问题

其他系列文章导航

Java基础合集
数据结构与算法合集

设计模式合集

多线程合集

分布式合集

ES合集


文章目录

其他系列文章导航

文章目录

前言

一、排查思路

二、预防CPU飙升

三、总结


前言

在当今的信息化时代,计算机系统在各行各业都发挥着重要的作用。然而,当生产环境中的CPU飙升时,系统性能会受到影响,甚至导致整个系统瘫痪。这不仅会对企业造成经济损失,还会对用户体验造成严重影响。因此,如何定位并解决生产环境中CPU飙升的问题,已成为众多企业和开发人员亟待解决的问题之一。

本文旨在探讨如何定位生产环境中CPU飙升的问题,并提供相应的解决方案。通过了解CPU飙升的原因、定位方法以及解决方案,企业和开发人员可以更好地应对生产环境中出现的CPU飙升问题,提高系统性能和用户体验。


一、排查思路

解决这个问题的关键是要找到Java代码的位置。下面分享一下排查思路,以CentOS为例,总结为4步。

  • 第1步,使用top命令找到占用CPU高的进程。
  • 第2步,使用ps –mp命令找到进程下占用CPU高的线程ID。
  • 第3步,使用printf命令将线程ID转换成十六进制数。
  • 第4步,使用jstack命令输出线程运行状态的日志信息。

下面详细介绍每一步的操作。

第1步,在使用top命令之后,可以看到一个列表,其中包含PID(进程ID)、USER(操作用户)、CPU占用率、内存占用率、TIME+(运行时间)、COMMAND(运行命令)等信息。一般默认按CPU占用率从上到下降序排列,如下图所示。

图片

我们找到COMMAND列是java的这一行,说明这个程序就是用Java编写的。然后,用记事本记下这一行的PID,也就是进程ID。

第2步,使用ps -mp命令,输出这个PID下面的线程运行情况列表,如下图所示。

图片

在这个列表中包含了几个关键字段,比如CPU占用率、TID(线程ID)、TIME(运行时间)等。在这个列表中找到CPU占用最高的线程,记下TID,也就是线程ID。

前面记下的TID是一个十进制数,不能直接使用,需要转化为十六进制数。

第3步,使用 printf 命令将TID转换为十六进制数,如下图所示。

图片

这样就得到了真正占用CPU过高的线程ID。

第4步,使用jstack命令输出线程的具体运行日志,如下图所示。

图片

jstack有3个参数,第1个参数是前面记下的 PID,之后加上 grep,紧跟着是转成十六进制数的TID,最后加上 –A和一个数字,这个数字表示输出日志的行数,至此就可以直接打印出具体的异常信息了。

如果日志信息比较多,异常内容比较复杂,则可以把这些异常信息输出到一个   txt文件中,慢慢分析。只需要在 jstack命令的最后追加 txt 文件名就可以了。

命令如下:

jstack PID | grep TID -A60 >> error_log.txt

二、预防CPU飙升

预防生产环境CPU飙升的方法有:

  1. 优化代码:检查代码中是否存在死循环、重复计算等问题,避免不必要的计算和循环。优化代码可以减少CPU的使用率,提高系统性能。
  2. 调整系统配置:根据实际需求,合理配置系统参数,如内存分配、磁盘I/O等。避免分配过多的CPU资源,导致资源浪费和系统崩溃。
  3. 升级硬件:如果生产环境的硬件配置较低,可以考虑升级硬件,如增加内存、更换CPU等。升级硬件可以提升系统性能,避免CPU资源不足导致的问题。
  4. 使用监控工具:监控工具可以帮助我们实时监控系统的CPU使用情况,及时发现并解决CPU飙升的问题。常用的监控工具包括top、htop、vmstat等。
  5. 合理使用并发:在多线程或多进程环境下,合理使用并发可以避免过多的线程或进程竞争CPU资源,提高系统性能。
  6. 限制异常进程:对于异常进程,如黑客攻击、病毒等,可以通过限制其CPU使用率来防止CPU资源被恶意占用,保障正常进程的运行。
  7. 定期维护:定期对系统进行维护,如清理垃圾文件、升级软件包等,可以保持系统的良好状态,预防CPU飙升的问题。

三、总结

总结:定位并解决生产环境CPU飙升的问题

在生产环境中,CPU飙升可能会导致系统性能下降,影响用户体验。为了定位并解决这个问题,以下是一些可能有用的步骤:

监控系统性能

监控系统性能是定位CPU飙升问题的第一步。您可以使用各种监控工具来收集系统性能数据,例如top、htop、sar等。这些工具可以帮助您确定CPU使用率最高的进程,以及CPU使用率与系统负载之间的关系。

分析系统负载

当CPU使用率过高时,通常是由于系统负载过高所致。您可以分析系统负载,以确定是否存在任何可能导致CPU使用率过高的因素。例如,您可以检查是否存在内存不足、磁盘I/O问题、网络拥塞等问题。

检查应用程序代码

应用程序代码中的某些错误或不良习惯可能会导致CPU使用率过高。例如,无限循环、大量递归调用、不必要的计算等。您可以检查应用程序代码,以确定是否存在任何可能导致CPU使用率过高的因素。

使用性能分析工具

性能分析工具可以帮助您定位CPU使用率过高的具体原因。例如,您可以分析堆栈跟踪、CPU剖析图等来确定哪些函数或线程正在消耗大量的CPU资源。

优化系统配置

系统配置中的一些设置可能会导致CPU使用率过高。例如,您可以将一些服务器的配置更改为使用较少的CPU资源,或者增加更多的服务器来分担负载。

总之,定位并解决生产环境CPU飙升的问题需要深入理解系统性能、应用程序代码和系统配置等方面的知识。通过监控系统性能、分析系统负载、检查应用程序代码、使用性能分析工具和优化系统配置等方法,您可以有效地解决CPU飙升的问题,提高系统性能和用户体验。


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

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

相关文章

DeepStream--测试PCB-Defect-Detection

GitHub - clintonoduor/PCB-Defect-Detection-using-Deepstream: PCB defect detection using deepstream & YoloV5我参考了了这个代码,作者基于YoloV5,训练一个电路板检测的模型,训练数据集来自https://robotics.pkusz.edu.cn/resources…

BearPi Std 板从入门到放弃 - 后天篇(1)(I2C1 读取 光照强度)

简介 基于 BearPi Std 板从入门到放弃 - 引气入体篇(5)(printf打印到串口), 通过I2C接口,读取光照强度并打印到串口; 开发板 : Bearpi Std(小熊派标准板) 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 串口: U…

SpringBoot整合RocketMQ

SpringBoot整合RocketMQ 文章目录 SpringBoot整合RocketMQ下载安装SpringBoot整合RocketMQ导坐标改配置实现消息生产与消费 下载安装 教程地址:https://www.bilibili.com/video/BV15b4y1a7yG/?p132&spm_id_from333.1007.top_right_bar_window_history.content.…

11. 哈希冲突

上一节提到,通常情况下哈希函数的输入空间远大于输出空间,因此理论上哈希冲突是不可避免的。比如,输入空间为全体整数,输出空间为数组容量大小,则必然有多个整数映射至同一桶索引。 哈希冲突会导致查询结果错误&#…

大数据技术学习笔记(四)—— HDFS

目录 1 HDFS 概述1.1 HDFS 背景与定义1.2 HDFS 优缺点1.3 HDFS 组成架构1.4 HDFS 文件块大小 2 HDFS的shell操作2.1 上传2.2 下载2.3 HDFS直接操作 3 HDFS的客户端操作3.1 Windows 环境准备3.2 获取 HDFS 的客户端连接对象3.3 HDFS文件上传3.4 HDFS文件下载3.5 HDFS删除文件和目…

最强AI之风袭来,你爱了吗?

2017年,柯洁同阿尔法狗人机大战,AlphaGo以3比0大获全胜,一代英才泪洒当场...... 2019年,换脸哥视频“杨幂换朱茵”轰动全网,时至今日AI换脸仍热度只增不减; 2022年,ChatGPT一经发布便轰动全球&a…

【hacker送书第8期】Java从入门到精通(第7版)

第8期图书推荐 内容简介编辑推荐作者简介图书目录参与方式 内容简介 《Java从入门到精通(第7版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细讲解了使用Java语言进行程序开发需要掌握的知识。全书分为4篇共24章&a…

nginx对多个服务器的高可用,容易出现鉴权失败

高可用简单测试正常,但是出现高概率401鉴权错误 抓包发现,确实是401 , 而鉴权是两次交互: 抓包发现鉴权到不同服务器上了,导致鉴权没有完成。 此时就需要我们的ip_hash,把同一IP地址的请求,都分配给同一台后端服务器&…

【UE5】使用场系统炸毁一堵墙

效果 步骤 1. 新建一个空白项目 2. 新建一个Basic关卡,然后添加一个第三人称游戏和初学者内容包到内容浏览器 3. 在场景中添加一堵墙 4. 选项模式选择“破裂” 点击新建 新建一个文件夹用于存储几何体集 点击“统一” 最小和最大Voronoi点数都设置为100 点击“破…

cmd查看进程信息 终止进程

cmd查看进程信息 终止进程 1、cmd查看进程信息2、终止进程 1、cmd查看进程信息 tasklist命令 描述: 该工具显示在本地或远程机器上当前运行的进程列表。 tasklist /?查看本机所有进程列表 tasklist /V根据进程名 查看jmeter进程 tasklist /V |findstr /i jmeter2、终止进程…

1+x网络系统建设与运维(中级)-练习3

一.设备命名 AR1 [Huawei]sysn AR1 [AR1] 同理可得,所有设备的命名如上图所示 二.VLAN LSW1 [LSW1]vlan 10 [LSW1-vlan10]q [LSW1]int g0/0/1 [LSW1-GigabitEthernet0/0/1]port link-type access [LSW1-GigabitEthernet0/0/1]port default vlan 10 [LSW1-GigabitEt…

避免20种常见Selenium自动化测试异常,让你的测试更加稳定和可靠!

常见的Selenium异常 以下是所有Selenium WebDriver代码中可能发生的一些常见Selenium异常。 1、ElementClickInterceptedException 由于以某种方式隐藏了接收到click命令的元素,因此无法正确执行Element Click命令。 2、ElementNotInteractableException 即使目…

【Qt开发流程】之事件过滤器及sendEvent和postEvent

描述 事件过滤器(Event Filter)是Qt中一个强大的事件处理机制,它可以在对象接收到事件之前截获事件,并进行自定义处理。事件过滤器可以在不修改对象自身代码的前提下,对其进行事件处理和拦截。 事件过滤器的使用过程如下: 创建一…

C++ 文件操作之配置文件读取

C 文件操作之配置文件读取 在项目应用时常常会涉及一些调参工作,如果项目封装成了.exe或者.dll,那么频繁调参多次编译是一件十分低效的事情,如果代码算法或者逻辑是一定的,那么参数完全可以通过读入配置文件来获取之前在用C - op…

界面组件DevExpress Reporting v23.1新版亮点 - UX功能增强

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v23.1已于前段时间…

Db2的Activity event monitor在Db2 MPP V2上收集ROWS_INSERTED信息

注:本文不是讲解Db2 Activity event monitor,只是一个用法实践。要了解Activity event monitor,请参考 https://www.ibm.com/docs/en/db2/11.5?topicevents-activity-event-monitoring 。 环境 Red Hat Enterprise Linux release 8.8 (Oot…

Linux下设置redis临时密码和长期密码

临时密码 第一步:先启动redis,命令:./src/redis-server ./redis.conf 第二步:进入redis,命令:./src/redis-cli 第三步:查看密码,命令:config get requirepass 如果你re…

leetcode 876.链表的中间结点

补充上次的环形链表没细讲的快慢指针(这三道题现在可以连起来看),希望对你做题思路有帮助 876.链表的中间结点 题目 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结…

Python实现FA萤火虫优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

光伏设计方案中最重要的是什么?

随着人们对可再生能源的关注度不断提高,光伏发电成为了越来越受欢迎的选择。然而,在设计和实施光伏项目时,有很多因素需要考虑。那么,在光伏设计方案中,最重要的是什么呢? 地理位置和环境:选择合…