Linux下排查进程占用cpu高的问题
相信很多C++程序员都经历程序占用cpu过高的问题,这种问题,如果对代码运行逻辑足够熟悉,只靠脑子想估计定位起来也不难,但是如果是调用第三方sdk,或者团队其他人开发的库导致的cpu占用居高,就不那么容易定位了。
如何确定程序cpu占用情况?
这个非常简单,一条命令搞定,top -p 进程pid,这样就可以:
这样就可以持续的观察你的程序的cpu占用情况,如果一直居高不下,就可能是有问题了。从图中可以看到%CPU为98.0,这已经非常非常高了。
如何查看线程级别的cpu占用情况?
方法一:
命令:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu | grep 进程号
这个比较长,理解一下也不难记忆,这里我们可以看到用户、进程号、父进程号、线程号、cpu占用总时长、cpu占用率、程序名。按照cpu的值进行了升序排列,最后一个即为占用cpu最高的线程,这样就可以找到对应线程号。
图中第4列就是线程号,第5列是cpu占用时长,第6列是cpu占用率,可以看到54313线程占用CPU最高。
方法二:
命令:
top -H -p 进程号-H :Threads-mode operation
-p :Monitor-PIDs
这个就很好记了,推荐用这个!一目了然,动态显示各个线程的cpu占用情况,很容易找出最高的那个。
图中%CPU列很清晰的列出了cpu的占用状况,也可以看出54313线程占用cpu最高。
细心的同学发现了,为什么这两种方法得到的数据不一样?莫非不对?其实都是对的,只是计算用的数据不同,top得到的是瞬时的cpu占用率,top数据默认3秒刷新一次,所以计算的是这3秒内线程占用CPU时长占比,而ps计算的是从启动到现在的一个时长占比,运行时间越长,就会趋近于某个固定值,感兴趣的同学可以了解一下cpu占用率的算法。
如何将问题定位到代码行级别?
通过上面的操作我们已经找到了那个搞事情的线程,但是线程长得都一个鬼样子,我们只能看到一个代表它的数字,此时需要一个建立一个线程号与具体代码的映射关联,那么就需要用到这几个查看堆栈信息的强大工具了。
gstack/pstack(c/c++程序)
命令:
gstack/pstack 进程号
这两个其实一个工具,pstack是gstack的软连接而已。
Linux下排查进程占用cpu高的问题相关推荐
- Linux下JAVA线程占用CPU高的分析方法
2019独角兽企业重金招聘Python工程师标准>>> 上次分析系统中占用CPU高的问题,得到一些使用Java自身调试工具的经验,与大家分享. (1)使用top命令找出占用cpu最 ...
- linux系统gpk-update-icon进程占用CPU资源100%
1. 症状:linux系统gpk-update-icon进程占用CPU资源100%,监控到用户进程跑到100% 2.原因分析: gpk-update-icon进程在GUI模式下会自动通知rpm软件包更 ...
- win10系统system进程占用cpu高怎么解决
Win10系统经常发现任务管理器中的system进程占用了很高的cpu内存,一直在50%左右,这也导致了多项应用程序运行卡顿,本人是家庭激活版本,也在网上搜索win10系统system进程占用cpu高 ...
- linux下查看进程占用端口和端口占用进程命令
Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...
- linux下java进程占用高问题分析过程
2019独角兽企业重金招聘Python工程师标准>>> 1.用top命令找出占用cpu高的进程,记录下pid 2.用top -H -p pid(上面的pid)查看该进和下各线程占用c ...
- java gc占用cpu问题_Java进程占用CPU高的问题跟踪
http://www.cublog.cn/u/12331/showart_255325.htmlWebLogic高cpu消耗诊断一例故障分析报告故障描述2007-3-6日上午,在系统监控时发现WebL ...
- linux下查看java 占用cpu使用情况
使用top命令,查看cpu占用过高的java PID (如PID=9876) 使用ps aux|grep PID (ps aux|grep 9876)查看是那个java程序占用cpu . ps - ...
- linux中systemd进程占用cpu,linux systemd 进程cpu 打满解决
首先看到2个进程都是systemd 的100% 我都吃惊了.还以为中毒了 然后尝试用命令查看 cd /proc/17627 && ls -la查看CPU占用高的进程正在干什么 cd / ...
- 隐藏进程占用cpu高
使用uptime和top 可以看到cpu的使用率高,但是看不到占用的进程 查看文件发现很多文件被上了特殊权限.基本可以确定服务器被黑了 先使用lsattr查看权限,再用chattr解除权限 挖矿修改了 ...
最新文章
- Confluence 6 如何保持我空间的整洁
- 网页版登录入口_企业微信网页版怎么登录?企业微信客户端和网页版有什么区别?...
- php root 启动,php-fpm如何以root身份启动
- 知识点 - python 类的私有/保护 属性和方法
- 独家下载!《零售数据中台通关指南》,带你玩转新零售
- P2664 树上游戏
- Sentinel(十四)之控制台
- [Linux]Ubuntu下用apt-get安装的应用程序位置
- 月薪一万在石家庄能过什么样的生活?
- VBA员工出差管理系统(上)
- OpenDDS架构说明
- Speedoffice(Excel)怎么把边框线条加粗
- java 读取 excel 科学计数
- b类 蚂蚁金服_终于拿到蚂蚁金服Offer!!!分享一下全程面试题和面试经验!...
- coremail服务器无响应,icoremail邮箱系统 邮件收发常见问题|创思Chance
- Android云手机平台搭建-2020圈钱热潮
- 2点直线方程 + 3点平面方程
- java学习心路历程
- iphone 计算机找不到了,电脑找不到苹果手机热点
- Java——将一个正整数分解质因数
热门文章
- linux下,ssh服务安装和法git简单的使用方,整理实测。
- java中Vector
- 六大Web负载均衡原理与实现
- [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理
- 【数据结构与算法】之深入解析“插入区间”的求解思路与算法示例
- 【数据结构与算法】之深入解析“石子游戏IX”的求解思路与算法示例
- iOS经典面试题之深入分析block相关高频面试题
- Ubuntu下安装pip
- 【Tools】Navicat Premium12安装教程
- 【Linux】一步一步学Linux——uptime命令(76)