how to debug thread cpu 100%

when we write a program, cpu and memory usages are very important to indicate the stability of the program. Once the cpu usage reached 90%, there are some bugs in your program, and you must find the problem. Here is a simply guide to debug with cpu 100%. For example:

void *first_routine (void * args)
{
    while(1)
    {
        int a = 1;
        usleep(1);
    }

    return NULL;
}

int main()
{
    pthread_t thread_first, thread_second;
    pthread_create(&thread_first, NULL, &first_routine, NULL);

    while(1)
    {
        sleep(4);
    }
    return 0;}

then complile it : gcc debug.c -o debug -lpthread , and run it .

iii) use top tool find the bug thread,  top -p $pid -H

iv) use pstack : pstack $tid(bug thread), to look the stack of the bug thread. but pstack can‘t see the paraments. if you still can‘t determine the bug line, user gcore to get the program core.  (gcore $pid)

v)  gdb -c  $core.file  ./exe , and the use  command  bt(back trace), then use the paraments to determine the bug code.

时间: 2024-08-09 06:34:41

how to debug thread cpu 100%的相关文章

mysql one thread cpu 100%

昨天晚上,运维过来说有台生产服务器的mysql cpu一直100%,新的客户端登录不了,但是已经在运行的应用都正常可用. 登录服务器后,top -H看了下,其中一个线程的cpu 一直100%,其他的几乎都空闲. MySQL thread id 14560536, OS thread handle 0x7f1255ef1700, query id 31889137761 10.26.124.8 osm cleaning up top - 18:56:26 up 62 days, 3:55, 3 u

Linux系统cpu 100%修复案例

Linux系统cpu 100%修复案例 ?阿里云技术支持团队:完颜镇江 案例背景: Linux主机连续三天CPU% 处理思路: 1.  登录服务器查看/var/log/messages+/var/log/messages.1+/var/log/messages.3里恰好没那三天的日志 2.  dmesg里也无有用的信息 ? 3.  至此怀疑是被攻击了,自然而然的去看对应时间点的带宽占用情况,查看之后发现带宽一切正常,继续排查 4.  怀疑是某个程序的异常,首先的从web进程开始查,通过httpd

jboss 占用cpu 100%

通过Java thread dump分析找到耗费CPU最高的源代码 分类: 9. Java2010-04-11 23:06 9272人阅读 评论(4) 收藏 举报 threadjavaeclipse插件redhatjbosslinux 通过Java thread dump分析找到耗费CPU最高的源代码 作者:胡家辉 2010-04-11 最近产品在运行过程中出现了性能问题,在很低的流量的情况下CPU就达到40%,流量稍高时CPU就达到98%. 产品是Java写的,运行于JBOSS平台.操作系统为

线上服务 CPU 100%?一键定位 so easy!

转自:  https://my.oschina.net/leejun2005/blog/1524687 摘要: 本文主要针对 Java 服务而言 0.背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题.尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一通手忙脚乱,定位过程百转千回. 对此,也有不少同学曾经整理过相关流程或方法论,类似把大象放进冰箱要几步,传统的方案一般是4步: top oder by with P:1040

Java死锁排查和Java CPU 100% 排查的步骤整理

工欲善其事,必先利其器 简介 本篇整理两个排查问题的简单技巧,一个是java死锁排查,这个一般在面试的时会问到,如果没有写多线程的话,实际中遇到的机会不多:第二个是java cpu 100%排查,这个实际的开发中,线的应用出现这个问题可能性比较大,所以这里简单总结介绍一下,对自己学习知识的一个整理,提高自己的解决问题能力. 一.Java死锁排查 通过标题我们就要思考三个问题: 什么是死锁? 为什么会出现死锁? 怎么排查代码中出现了死锁? 作为技术人员(工程师),在面对问题的时候,可能需要的能力是

Linux(2)---记录一次线上服务 CPU 100%的排查过程

Linux(2)---记录一次线上服务 CPU 100%的排查过程 当时产生CPU飙升接近100%的原因是因为项目中的websocket时时断开又重连导致CPU飙升接近100% .如何排查的呢 是通过日志输出错误信息: 得知websocket时时重新 连接的信息,然后找到原因 解决了. 当然这里幸好能通过日志大致分析出原因 那么我就在思考如果日志没有告诉任何信息 但线上CPU还是接近100%那么如何排查呢.所以学习了下排查过程. 通过查阅资料并实践后,这里总结了两种办法.第一种博客满天飞的方法

系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路

处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警.本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路. 对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性.这种情况可能的原因主要有两种: 代码中某个位置读取数据量较大,导致

Java死锁排查和Java CPU 100% 排查的步骤整理(转)

工欲善其事,必先利其器 简介 本篇整理两个排查问题的简单技巧,一个是java死锁排查,这个一般在面试的时会问到,如果没有写多线程的话,实际中遇到的机会不多:第二个是java cpu 100%排查,这个实际的开发中,线的应用出现这个问题可能性比较大,所以这里简单总结介绍一下,对自己学习知识的一个整理,提高自己的解决问题能力. 一.Java死锁排查 通过标题我们就要思考三个问题: 什么是死锁? 为什么会出现死锁? 怎么排查代码中出现了死锁? 作为技术人员(工程师),在面对问题的时候,可能需要的能力是

云计算之路-阿里云上:CPU 100%引发的状况

今天下午17:00-17:05之间,在请求量没有明显变化的情况下,SLB中的1台云服务器的CPU突然串到100%(当时SLB中一共有3台云服务器),见下图: 造成的直接后果是请求执行时间变得超长,最长竟然达到了53秒(下图中的紫色线条). 另外伴随的表现是大量请求排队. 再看看这个时间段其它2台服务器的表现: 从这些现象分析,我们猜测CPU 100%这台云服务器出现了CPU资源争抢问题,将之从SLB中摘除后恢复正常. 云计算之路-阿里云上:CPU 100%引发的状况,布布扣,bubuko.com