Linux 排查

一、排查CPU使用率过高

1. 找出耗CPU的进程

使用top命令查看内存、cpu及各进程信息

2.找出耗cpu的线程情况

top -H -p [进程id]
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu | grep [进程id]

3.定位线程堆栈信息,找到异常代码

printf "%x\n" [线程id] 将线程id转换为16进制
jstack pid |grep tid -A 30 [16进制线程id] 打印线程的堆栈信息

 

二、排查可执行程序崩溃

1.core文件

是程序崩溃后的内存数据,用gdb打开core文件,打开就是崩溃位置

gdb --core=./core main
bt //看调用栈

2.使用demsg

编译程序,-g 表示编译时加入调试信息

gcc -o test1 -g test1.c

使用dmesg命令查看系统日志错误信息

dmesg | grep main
[54106.016179] test1[8352] trap divide error ip:400506 sp:7fff2add87e0 error:0 in test1[400000+1000]

这条信息里的ip字段后面的数字就是test1程序出错时所程序执行的位置。使用addr2line就可以将400506转换成出错程序的位置:

$ addr2line -e test1 400506
/home/hanfoo/code/test/addr2line/test1.c:5
指的是test1.c的第5行

3.strace

strace -p pid    // 打印进程的系统调用信息,包括参数、返回值等

 

三、查看端口号占用情况

netstat -anp |grep 3306 查看3360端口号的占用情况,LISTEN则表示被占用

 

posted @ 2023-05-16 16:31  一泓喜悲vv  阅读(39)  评论(0编辑  收藏  举报