设为首页 收藏本站
查看: 836|回复: 0

[经验分享] php-fcgi进程数超过预设值问题的解决

[复制链接]

尚未签到

发表于 2017-4-1 11:47:52 | 显示全部楼层 |阅读模式
  其中要修改一个php—fpm.conf 的配置文件:
  <value name=”max_children”>50</value>。
  记得自己明明是设置的50,但是在执行ps aux|grep php-cgi|wc -l 后显示502。怎么会这样。
  问题的原因是ngnix重启后,php-fpm没有理会原来的进程,所以重启后,php-cgi进程会越来越多。

  ###############################

  某日和开发的同事调试服务器php状态时候发现下面这种情况:
ps aux |grep php-fcgi |wc -l
602
表面上看是没什么问题,可是我明明记得 php-fcgi我只开了300个啊!难道有人改过了?
立刻查看 php-fpm.conf 找到这一项
<value name="max_children">300</value>
确实是300个啊~~,怎么会有600个?
ps aux |grep php-fcgi |more
www 11707 0.0 0.7 250192 3888 ? S 17:07
www 11708 0.0 0.7 250192 3888 ? S 17:07
www 11709 0.0 0.7 250192 3888 ? S 17:07
www 11710 0.0 0.7 250192 3888 ? S 17:07
www 11711 0.0 0.7 250192 3888 ? S 17:07
状态都正常啊,奇怪了。尝试把 php-fcgi重启一下
/usr/local/php-fcgi/sbin/php-fpm restart
Shutting down php_fpm . done
Starting php_fpm done

再次查看
ps aux |grep php-fcgi |wc -l
602

还是多了300个.....奇怪了,这三百个是怎么来的呢?
因为我们的php和nginx是一起的,所以我又想到了nginx。
在访问量不高的时候偷偷重启了一下nginx
/etc/init.d/nginx restart
停止 nginx: [确定]
Shutting down php_fpm done
启动 nginx: [确定]
Starting php_fpm done

再次查看,我倒.....真服了。我和开发的同事都一头雾水
ps aux |grep php-fcgi |wc -l
602
这回不能简单的考虑重启服务了,需要想想到底是哪里出的问题,而且这是生产服务器不能随便弄。
因为现在线上的服务都还算正常,这个问题我们就先放下了。
第二天,那个同事跟我说。那个问题他知道怎么解决了,而且也知道是什么原因造成的。我赶紧问清楚:
原来是这样,最近因为测试比较频繁,对nginx服务重启次数较多。不知道哪次重启时候失败导致 nginx进程虽然停止了,
但是一起的300个php-fcgi却没有重启,导致这些进程还留在内存里不能被释放。需要强制手动杀掉所有的php-fcgi进程后再重启php-fpm就可以了。
听到这里我恍然大悟。马上去服务器上操作,果然问题解决了,具体步骤如下
pkill php-cgi
再次查看
ps aux |grep php-fcgi |wc -l
1
好了没有了,赶紧重启,因为现在访问网页已经是 502了。
/usr/local/php-fcgi/sbin/php-fpm restart
Shutting down php_fpm warning, no pid file found - php-fpm is not running ?
Starting php_fpm done
再次查看进程数
ps aux |grep php-cgi |wc -l
302
好了,正常了,呵呵
后来我在试验机上面又测试了一下,果然重现了那个问题


[iyunv@ime /]# /etc/init.d/nginx restart
停止 nginx: [确定]
Shutting down php_fpm done
启动 nginx: [确定]
Starting php_fpm done
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
302
这时进程数是正常的,下面杀掉nginx进程
[iyunv@ime /]# pkill nginx
[iyunv@ime /]# lsof -i:80
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
302
这300个进程就傻乎乎的留在这里了,再次启动nginx
[iyunv@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[iyunv@ime /]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
nginx 14072 root 8u IPv4 64090 TCP *:http (LISTEN)
nginx 14073 www 8u IPv4 64090 TCP *:http (LISTEN)

[iyunv@ime /]# ps aux |grep php-cgi|wc -l
603
php-fcgi没有去理会在内存中存在的进程,继续开启了300个...
我如果再重复这个过程呢?
[iyunv@ime /]# pkill nginx
[iyunv@ime /]# lsof -i:80
[iyunv@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[iyunv@ime /]# pkill nginx
[iyunv@ime /]# lsof -i:80
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
904
900个... 继续重复
[iyunv@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
954
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
1205
机器开始变慢了,估计再重复几次机器就会挂掉了...
[iyunv@ime /]# pkill php-cgi
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
5
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
5
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
1
[iyunv@ime /]# /etc/init.d/nginx restart
停止 nginx: [确定]
Shutting down php_fpm warning, no pid file found - php-fpm is not running ?
启动 nginx: [确定]
Starting php_fpm done
[iyunv@ime /]# ps aux |grep php-cgi|wc -l
302
好了,恢复正常....
看来需要修改一下 php-fpm的启动脚本了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-358669-1-1.html 上篇帖子: PHP (Html) + Css 实现组织结构图 下篇帖子: 适用于 php-5.2 的 php.ini 中文版(四)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表