- 背景:PHP服务器设置了200个进程,dynamic 方式。接口请求并发不是很大,1秒中100左右,讲道理完全够用,但是问题是:启动了服务后过1分钟PHP日志就会出现进程数不够的提示。而且请求接口刚开始很快,然后是越来越慢,最慢的时候请求一次接口的响应时间能达到40多秒,因为接口里只有数据库操作是最慢的,数据库也是正常插入操作。所以不可能导致接口响应时间这么慢。但是找了一段时间也没什么进展。就只能把某些不是急需的接口暂停掉。发现进程数能勉强够用。但是这样做不是解决方法。所以接下来又继续找。
- 今天和另一位同事在排查的时候,排查了一些php-fpm进程设置方面的可能的问题后,就开始看资源的占用。内存和CPU占用很高,通过top命令 发现了kdevtmpfsi 进程占用资源特别高。(本人菜鸟,不知道这是啥)然后他跟我说这是挖矿病毒:)(嘿嘿,还是第一次遇到 ),然后就开始搞如何干掉这个病毒
- 第一次:https://blog.csdn.net/Owen_goodman/article/details/103731981
- 杀掉进程后,过了一会,进程又自己启动了。第二次:杀掉进程后加入了一些命令
命令
touch /tmp/kdevtmpfsi && touch /var/tmp/kinsing echo "everything is good here" > /tmp/kdevtmpfsi echo "everything is good here" > /var/tmp/kinsing touch /tmp/zzz echo "everything is good here" > /tmp/zzz chmod go-rwx /var/tmp chmod 1777 /tmp
但是过了一会又又又又又又启动了。最后没办法,写了一个定时脚本,每分钟杀死一次。
#!/bin/sh kdevtmpfsi_pid=`ps aux | grep kdevtmpfsi | grep -v "grep" | awk ‘{print $2}‘` kinsing_pid=`ps aux | grep kinsing | grep -v "grep" | awk ‘{print $2}‘` sudo kill -9 $kdevtmpfsi_pid sudo kill -9 $kinsing_pid sudo rm -f /tmp/kdevtmpfsi* /tmp/kinsing # 除了root用户以外,其他用户创建的定时任务将被阻止 # touch /etc/cron.allow # echo “root” > /etc/cron.allow