PHP-CGI 进程过多,该如何查找原因?

2016-10-26 20:54:17 +08:00
 abcbuzhiming
系统是 windows 2008 R2 ,通过 IIS7.5 ,以 fastcgi 模式执行 php ,这两天怀疑遭到攻击, php-cgi 进程可以出现上百个那么多,而且从用户名看出均是 IIS 下某个特定站点启动的。怀疑该站点下是否有某段程序写的有漏洞造成死循环,被外界发现了,然而,该如何进一步定位这个问题?
3152 次点击
所在节点    PHP
21 条回复
huigeer
2016-10-26 20:56:55 +08:00
iis 日志导出,分析访问日志路由和 ip
cxbig
2016-10-26 21:06:08 +08:00
僵尸进程,我司有类似情况, Linux 系统,写了一个脚本从 log 里统计特定参数,达到阈值自动重启 php-fpm ,并清理 pid 小于新的主进程的所有 worker 。
vibbow
2016-10-26 21:14:28 +08:00
LZ 你 APP POOL 的 max instance 设置的多少
abcbuzhiming
2016-10-26 22:05:28 +08:00
@cxbig 你们没有分析为啥会产生僵尸进程?
vibbow
2016-10-26 22:06:24 +08:00
@abcbuzhiming 他们是 linux......
cxbig
2016-10-26 22:15:15 +08:00
@abcbuzhiming 很粗暴的解决方案,暂时没有深挖。
enenaaa
2016-10-26 22:21:15 +08:00
如果是死循环,那 cpu 占用应该很高。如果 cpu 空闲,,看一下网络连接情况,是不是一直存在空闲连接。
abcbuzhiming
2016-10-26 22:23:24 +08:00
@vibbow 最大工作进程,设置的为 2.不知道为啥就能蹦出那么多来
abcbuzhiming
2016-10-26 22:24:58 +08:00
@enenaaa 很奇怪的是,这些进程 CPU 占用都不是很高,普遍都是 1-3%晃悠。我们也想不通为啥
enenaaa
2016-10-26 22:27:27 +08:00
@abcbuzhiming 可能是某些蜘蛛类客户端长时间扫描你的网站,或者它们恶意保持连接
abcbuzhiming
2016-10-26 22:44:02 +08:00
@enenaaa 可是我的最大进程只是 2 啊,就算是保持连接,难道 php-cgi 不会自动退出吗?
vibbow
2016-10-26 23:15:22 +08:00
@abcbuzhiming php-cgi 在超过 实例最大请求数 之前,一般情况不会自动退出
vibbow
2016-10-26 23:15:46 +08:00
@abcbuzhiming 不过为什么是 2 ? fastcgi 默认设置都是 4 的啊...
vibbow
2016-10-26 23:16:44 +08:00
还有 LZ 你的活动超时 和 空闲超时 都是多久?
abcbuzhiming
2016-10-27 00:42:51 +08:00
@vibbow 空闲超时 20 分钟,活动超时 60 秒
abcbuzhiming
2016-10-27 00:44:13 +08:00
我操我发现这些 php-cgi.exe 真虎啊,我在 IIS 的程序池手动回收他们都不退出的?
vibbow
2016-10-27 01:04:39 +08:00
@abcbuzhiming 记得看过 IIS 的推荐配置,这两项均是 300 秒...
vibbow
2016-10-27 01:05:09 +08:00
@abcbuzhiming 你用 process explorer 看一下进程树,看 php 的进程还在不在 w3wp 下面
realpg
2016-10-27 08:45:57 +08:00
老老实实用 linux 就完了……
ijustdo
2016-10-27 10:22:38 +08:00
linux 下 我一般这么干 找到占用 cpu 最高的 phpcgi 然后用 lsof 和 strace 跟踪

HPHP_PID=`ps aux|grep "php-fpm"|grep -v 'grep'|awk '{print $3" " $2}'|sort|tail -n 1|awk '{print $2}'`

if [ -n HPHP_PID ]; then
lsof -p ${HPHP_PID} > "/home/lsof_${HPHP_PID}"
strace -s 256 -p ${HPHP_PID} > "/home/starce_${HPHP_PID}"
fi

看跟踪结果 再解决

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/315721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX