当前位置: 技术问答>linux和unix
为什么CPU占用率会有100%?
来源: 互联网 发布时间:2015-08-12
本文导语: 守护进程,有3个线程,正常的时候3个线程的状态都会在睡眠和运行之间转换,有几次进程表现异常,我查看进程,其中2个线程一直处于睡眠状态,而另外一个则一直是运行状态。查看CPU占用,4个线程(2个超线程CPU...
守护进程,有3个线程,正常的时候3个线程的状态都会在睡眠和运行之间转换,有几次进程表现异常,我查看进程,其中2个线程一直处于睡眠状态,而另外一个则一直是运行状态。查看CPU占用,4个线程(2个超线程CPU)中的一个基本处于100%的占用。按照操作系统的调度方法,是不是不应该出现这种情况?而虽然有1个线程处于一直运行状态,该线程应该写日志却一直未有这个表现。谁能帮帮我?
|
你可能没看懂楼上的建议。你的程序肯定是死循环在什么地方了。
即使无法预知什么时候死掉,照你的说法,你压力加大到每秒钟处理几百个请求,应该会有死的时候。
等程序死了之后,用gdb attach死掉的程序,gdb也支持thread调试,看一下异常的thread锁在什么地方。关于gdb怎么attach, 怎么调试,man gdb和info gdb里面讲得非常清楚。不知道说明白没有。
即使无法预知什么时候死掉,照你的说法,你压力加大到每秒钟处理几百个请求,应该会有死的时候。
等程序死了之后,用gdb attach死掉的程序,gdb也支持thread调试,看一下异常的thread锁在什么地方。关于gdb怎么attach, 怎么调试,man gdb和info gdb里面讲得非常清楚。不知道说明白没有。
|
死掉的时候用gdb跟踪,attach上这个线程,看看停在了什么地方。
|
跟踪一下看锁在什么地方。
|
-g 编译,如果core掉,直接用gdb看看在什么地方core掉,再分析……