`

php-fcgi进程数超过预设值问题的解决

 
阅读更多

其中要修改一个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
好了,正常了,呵呵
后来我在试验机上面又测试了一下,果然重现了那个问题


[root@ime /]# /etc/init.d/nginx restart
停止 nginx: [确定]
Shutting down php_fpm done
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# ps aux |grep php-cgi|wc -l
302
这时进程数是正常的,下面杀掉nginx进程
[root@ime /]# pkill nginx
[root@ime /]# lsof -i:80
[root@ime /]# ps aux |grep php-cgi|wc -l
302
这300个进程就傻乎乎的留在这里了,再次启动nginx
[root@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[root@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)

[root@ime /]# ps aux |grep php-cgi|wc -l
603
php-fcgi没有去理会在内存中存在的进程,继续开启了300个...
我如果再重复这个过程呢?
[root@ime /]# pkill nginx
[root@ime /]# lsof -i:80
[root@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# pkill nginx
[root@ime /]# lsof -i:80
[root@ime /]# ps aux |grep php-cgi|wc -l
904
900个... 继续重复
[root@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# ps aux |grep php-cgi|wc -l
954
[root@ime /]# ps aux |grep php-cgi|wc -l
1205
机器开始变慢了,估计再重复几次机器就会挂掉了...
[root@ime /]# pkill php-cgi
[root@ime /]# ps aux |grep php-cgi|wc -l
5
[root@ime /]# ps aux |grep php-cgi|wc -l
5
[root@ime /]# ps aux |grep php-cgi|wc -l
1
[root@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
[root@ime /]# ps aux |grep php-cgi|wc -l
302
好了,恢复正常....
看来需要修改一下 php-fpm的启动脚本了
分享到:
评论

相关推荐

    Windows的版的spawn-fcgi

    spawn-fcgi-master 是 spawn-fcgi 的官方源码,但是不能在 windows 中编译。 spawn-fcgi-win32.c 是 windows 版源码,使用 MinGW 编译:命令行输入 “gcc spawn-fcgi-win32.c -lwsock32”即可无优化地编译, 懒得...

    spawn-fcgi-1.6.3_arm.tar.gz

    `spawn-fcgi-1.6.3_arm.tar.gz` 是一个针对 Linux 操作系统下 ARM 架构的交叉编译版本,包含了 `spawn-fcgi` 的源代码和编译后的二进制文件。 ### 1. FastCGI 技术 FastCGI 是一种常驻型(long-lived)的 CGI 规范...

    spawn-fcgi-1.6.4.exe for windows

    1. **下载与解压**:下载`spawn-fcgi-1.6.4`压缩包并解压到适当的目录,例如`C:\Program Files\spawn-fcgi-1.6.4`。 2. **添加环境变量**:为了方便在命令行中调用`spawn-fcgi.exe`,需要将其路径添加到系统环境...

    spawn-fcgi-1.6.3.tar

    在`spawn-fcgi-1.6.3.tar`这个压缩包中,包含的是`spawn-fcgi`的源代码,版本为1.6.3。解压后,你可以通过编译安装来使用它。以下是编译和安装的一般步骤: 1. **解压**:首先,你需要使用`tar`命令解压文件: ```...

    spawn-fcgi-1.6.4.tar.gz

    `spawn-fcgi-1.6.4.tar.gz` 是一个用于C++开发FastCGI应用程序的管理工具,其核心功能是管理和启动FastCGI进程。FastCGI是一种通信协议,它允许Web服务器与外部应用程序(如PHP、Python或Ruby解释器)进行长时间连接...

    spawn-fcgi-1.6.2.tar.gz

    亲自测试通过 找了好长时间找到的 和大家分享一下 spawn-fcgi spawn-fcgi原本是lighttpd的... tar xf spawn-fcgi-1.6.3.tar.gz cd spawn-fcgi-1.6.3 ./configure --prefix=/usr/local/spawn-fcgi make && make install

    spawn-fcgi -1.6.0.tar.gz fcgi

    http://blog.csdn.net/wangkangluo1/archive/2011/05/11/6411721.aspx 2. 下载spawn-fcgi ,编译安装 tar zxvf spawn-fcgi -1.6.0.tar.gz cd spawn-f cgi -1.6.0 ./conifgure make make install

    spawn-fcgispawn-fcgispawn-fcgispawn-fcgispawn-fcgispawn-fcgi

    `spawn-fcgi` 是 FastCGI 的一个启动和管理工具,它主要用于在服务器上快速启动和管理 FastCGI 进程。FastCGI 是一种Web服务器与动态内容生成器(如PHP、Python、Perl等)之间通信的协议,相较于传统的CGI,FastCGI...

    nginx-fcgi.txt

    FastCGI(Fast Common Gateway Interface)作为一种改进的通用网关接口,能够很好地解决这一问题。本文将从`nginx-fcgi.txt`文件出发,深入探讨Nginx如何通过FastCGI支持动态内容的处理。 #### 二、Nginx与FastCGI...

    spawn-fcgi-1.6.4 for Windows

    spawn-fcgi.exe Windows下运行

    nginx-fcgi.pl

    nginx-fcgi.pl

    【批量下载】spawn-fcgi-1.6.4.tar等.zip

    在这个批量下载的压缩包中,包含两个关键组件:fcgi-2.4.1.tar.gz和spawn-fcgi-1.6.4.tar.gz。它们都是FastCGI生态系统的重要组成部分。 首先,fcgi-2.4.1.tar.gz是FastCGI库的源代码包,它为开发者提供了一组API,...

    Windows下的CGI进程管理器,xxfpm,spawn-fcgi.exe

    内部包含xxfpm以及spawn-fcgi.exe,解压后根据需要选择其一即可,对于windows平台下nginx+php-cgi环境没有请求时php-cgi会自动释放的情况的解决方案,不明白的可自行百度查询相关资料,两个软件在windows Server 2003...

    基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能php平台

    2. **FastCGI管理器**:使用spawn-fcgi-1.6.3作为FastCGI的管理器,它可以有效管理多个php-fpm进程,从而提高PHP的执行效率。 通过将PHP与spawn-fcgi相结合,可以显著提升PHP应用程序的响应速度,尤其是在高并发...

    nginx-fcgi

    nginx-fcgi

    什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI.pdf

    Spawn-FCGI是FastCGI进程管理器,它可以管理多个FastCGI进程,并且可以根据需要动态地启动或停止FastCGI进程。 PHP-FPM(FastCGI Process Manager)是PHP的一个进程管理器,它可以管理多个FastCGI进程,并且可以...

    适合Ruby 1.9.1的Ruby-FCGI源码包

    在源码包`ruby-fcgi-0.8.7`中,你可以期待找到以下关键文件和目录: 1. `ext/`: 这个目录包含了Ruby-FCGI的C语言扩展代码,主要是`fcgi.c`和相关的头文件。`fcgi.c`是主要的实现文件,可能包含对原始代码的修改,以...

    具备守护监控功能的spawn-fcgi

    本spawn-fcgi在标准版本基础上实现了对子进程的守护和监控,当有子进程挂掉的时候会重新拉一个子进程,这样就解决了原有spawn-fcgi的一个弊端:即spawn-fcgi在启动了子进程后就直接退出了,这时候如果子进程都挂掉...

    CentOS6.3系统Yum安装php+spawn-fcgi+nginx和数据库mysql详细教程.pdf

    在本文中,我们将深入探讨如何在CentOS 6.3系统上使用Yum安装PHP、spawn-fcgi、Nginx以及MySQL数据库。首先,确保你的系统已经安装了最新的CentOS 6.3版本,并完成了最基本的网络配置。 1. **系统安装与网络配置** ...

Global site tag (gtag.js) - Google Analytics