问题故障

打开vSphere出现一个鲜红的警告:confluence CPU占用过高

打开confluence服务器,使用top查看下,排在第一位的kthreaddk占用CPU 800%,好家伙!

kill掉这个进程后还会自己重启,猜测是设置了定时启动任务。

top - 16:30:29 up 2 days,  2:08,  1 user,  load average: 8.25, 8.33, 8.23
Tasks: 219 total,   1 running, 218 sleeping,   0 stopped,   0 zombie
%Cpu(s): 99.6 us,  0.4 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16247596 total,  5828848 free,  5943652 used,  4475096 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  9913216 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                        
  7761 root      20   0 2453556   2764   1228 S 793.7  0.0 160:25.12 kthreaddk                                                                                                                                                                      
 15981 root      20   0  142084 136868      4 S   4.3  0.8   0:22.21 ijzfs8                                                                                                                                                                         
  2258 root      20   0 7314272   2.0g  47192 S   0.7 12.8  29:11.01 java                                                                                                                                                                           
   830 root      20   0  275048   4956   3668 S   0.3  0.0   3:11.01 vmtoolsd                                                                                                                                                                       
  2511 root      20   0 7068124 630560  17768 S   0.3  3.9  23:11.07 java                                                                                                                                                                           
     1 root      20   0  190912   3900   2588 S   0.0  0.0   0:25.50 systemd                                                                                                                                                                        
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.05 kthreadd                                                                                                                                                                       
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                                   
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.34 ksoftirqd/0                                                                                                                                                                    

查看定时器,查看定时器中的文件,发现文件不存在。再次查看定时任务,发现定时任务中的文件变了。关闭定时任务后还会出现新的定时任务,每次都是不同的目录。

crontab -l
* * * * * /boot/grub/9sv45i

解决方案

首先查看该进程的执行文件是否存在:

ll /proc/7761/exe

1) 执行以下命令,可以看见一个奇怪的进程在监听53421端口,

netstat -ltnp

先把这个进程kill掉。没多久它又会复活,再次kill掉。

kill -9 14714	

2)用 du -b [定时任务中的一个文件] 获取到文件的大小。

crontab -l
du -b /usr/local/hadoop/bin/ougglpn

3)查找并删除文件,find ./ -size 2867172c -type f用来查找文件, 2867172换成文件实际大小。

find ./ -size 2867172c -type f -exec rm {} \;

4)crontab -l 查看定时任务,如果还有定时任务 crontab -r删除定时任务。

crontab -l
crontab -r

5)kill掉kthreaddi进程。

ps -aux | grep kthreaddk
kill -9 11138

6)如果kthreaddi继续重启,反复执行1,2,3,4即可。