一、服务器CPU到达100%怎么排查?
1、定位大量消耗cpu的进程
top -c,显示进程列表,然后输入p,按照cpu使用率进行排序。比如下面所示
pid user %CPU command 43897 root 80% 执行的命令
2、定位此进程的线程
top -Hp pid,然后输入p按照cpu使用率排序
3、定位那段代码导致如此
printf "%x\n" pid(线程pid),把线程的pid转换成16进制。
jstack pid(进程pid) | grep '0x(16进制线程pid)' -C5 -color
jstack打印进程的堆栈信息,再通过grep找到线程相关,这时再打印出来的代码中,就可以看到哪个方法导致的cpu问题。
二、如何kill zombie线程?
kill一个进程无效,进程就进入了僵尸进程的状态,这是因为进程释放了该资源,但是父进程没有进行确认。
ps aux,查看stat,如果是z,就是zombie进程
ps -ef | grep 僵尸进程pid,就可以找到父进程的pid
接着kill父进程即可
三、服务器存储空间快满了,如何再不影响服务器的运行的情况下解决?
1、df -h,先看看磁盘的使用情况
然后查看tomcat日志,删除多余的很多天之前的日志,也可以写一个shell脚本定期删除几天前的日志。
2、find / -size+100M | xargs ls -lh,找大于100M的文件
3、du -h >fs_du.log查看各个目录占用磁盘的大小,看看那个文件包含大量的小文件