服务器CPU到达100%怎么排查?如何kill zombie线程?服务器存储空间快满了,如何再不影响服务器的运行的情况下解决?

1,081 阅读1分钟

一、服务器CPU到达100%怎么排查?

1、定位大量消耗cpu的进程

  • top -c,显示进程列表,然后输入p,按照cpu使用率进行排序。比如下面所示

    piduser%CPUcommand
    43897root80%执行的命令

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查看各个目录占用磁盘的大小,看看那个文件包含大量的小文件