linux 分析进程占用CPU过高

当遇到Linux进程CPU占用过高时,可通过ps和top命令找到问题进程及其线程,接着使用gdb附加到进程,通过info threads查看线程状态,并通过bt命令分析调用堆栈,排查是否存在死循环或死锁,从而定位并解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重点是查看进程的线程中,哪个线程占用cpu过高,然后用gdb附加到进程,调试线程,看是否有死循环或者死锁等问题,步骤如下:
1 先用ps + grep找出该死的进程pid,比如 1706

2 top -H -p 1706,(top然后shift+H可以看出某个线程,左上角有提示:thread on 则为可查看线程)所有该进程的线程都列出来, 看看哪个线程pid占用最多,记下对应的线程号,如:1723

  1. gdb attach 到进程号码(1706)
  2. (仍然在gdb中) info threads 结果大致如下:
(gdb) info threads
  8 Thread 0x7f9fa9366700 (LWP 1716)  0x0000003cec00b98e in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
  7 Thread 0x7f9fa8965700 (LWP 1720)  0x0000003cec00b98e in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
  6 Thread 0x7f9fa7f64700 (LWP 1721)  0x0000003cec00f4b5 in sigwait ()
   from /lib64/libpthread.so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值