今天玩云服务器,发现服务器变得很卡顿,解压文件有时都卡死了,很奇怪,不知道服务器出了什么状况。
于是登录到阿里云查看云服务器的情况,结果发现服务器的CPU使用率一直维持在100%。
于是远程连接到服务器,进行问题排查
1、查消耗cpu最高的进程PID,输入top命令
2、根据PID查出消耗cpu最高的线程号。top -Hp 512,显示一个进程的线程运行信息列表。
3、把上面线程的十进制数转成十六进制(printf %x 1062)
为426
4、根据线程号查出对应的java线程,进行处理。jstack -l 512 > ./512.stack,然后执行grep命令,看线程426做了什么
cat 512.stack | grep '426' -C 20
结果发现没有一点效果,什么都没有显示。于是直接杀死进程
kill -9 512。再次执行top命令,发现CPU的使用率依旧很高,但是进程的PID却改变了。
于是思考可能不是由于JAVA程序内部的一些错误(死循环…)造成CPU使用率一直维持在100%
再次执行top命令,仔细观察发现COMMAND显示的是[ext4]
于是怀疑服务器是不是中了某种病毒,导致恶意脚本代码执行,进而占用大量CPU。打开阿里云 云安全中心
发现服务器被植入了挖矿程序,程序脚本就在==/var/tmp/.system==目录下
,删除文件 rm -rf *,并杀死进程512 kill - 9 512。
发现CPU恢复正常。