记录一次项目中cpu100%的解决方法(思路)

由于实际情况没有进行截图,所以这里的截图已测试环境的情况截图说明

测试分析流程思路为:进程ID->线程ID->线程函数调用栈->函数耗时和调用统计->源代码分析

1.通过top命令找到可疑进程PID,记录进程PID=3122

top

在这里插入图片描述
2.找出消耗资源最高的线程

top -H -p 3122

在这里插入图片描述

  1. 使用gstack命令查看进程中各线程的函数调用栈
gstack  3131 > gstack.log

(1) 查看gstack.log

 vi gstack.log
 或
 cat gstack.log

在这里插入图片描述
说明:由于本虚拟机未部署任何程序,所以找不到任何关于程序进程的堆栈信息
(2)生成core文件,供调试使用:
–该命令生成core文件core.14094,等待程序执行完毕,如下图
在这里插入图片描述

(3)用gdb调试core文件,并线程切换到1号线程(说明:此处根据图3来确定的,实际情况可能是其他线程号,注意!!!)
执行命令:
–进入gdb调试模式下

gdb

–根据线程查看进程信息

thread  1

–查看堆栈信息

 where

在这里插入图片描述

注意:由于没有任何程序运行,可能未进行堆栈的消耗,所以为查找到相关信息!!!!!

备注: 查看这个线程所有系统调用
查看每个系统调用花费的时间及返回值
执行命令:strace -p 3131或strace -T -r -p 3131

strace -p 3131
或
strace -T -r  -p 3131

在这里插入图片描述

执行如下命令可以查看汇总信息:
strace -T -r -c -p 3131

strace -T -r -c -p 3131

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值