百度不收录什么网站,设计师网上接单的网站,大学生网络营销策划书模板,wordpress添加版块FPM是FastCGI Process Manager的缩写#xff0c;由全称我们可以知道其和FastCGI有关#xff0c;就是一个FastCGI的进程管理器。对于FastCGI我们可以理解成一个协议#xff0c;儿FPM是其在PHP中的一个实现。FPM的出现实现了PHP应用的分布式部署#xff0c;这样使得PHP和web服…FPM是FastCGI Process Manager的缩写由全称我们可以知道其和FastCGI有关就是一个FastCGI的进程管理器。对于FastCGI我们可以理解成一个协议儿FPM是其在PHP中的一个实现。FPM的出现实现了PHP应用的分布式部署这样使得PHP和web服务器可以在不同的机器上。当然与其说是FPM不如说是FastCGI的出现。最初FPM并没有被PHP的官方正式应用于PHP中只是作为PHP的一个补丁应用。但是自从PHP5.3.3版本以后FPM被正式捆绑进PHP中作为了PHP的一部分。这样我们配置起来比较方便只需在PHP编译的时候添加—enable-fpm选项即可php-5.6.9]# ./configure –enable-fpmFpm 的简单配置Fpm在php编译的时候添加—enable-fpm选项即可启动fpm此外在编译的时候还有两个选项分别是 –with-fpm-userUSER 和—with-fpm-groupGROUP用来设定fpm所属的用户和用户组。如果不指定这两项那默认的用户和用户组都是nobody。当然这两项也可以在fpm的配置文件php-fpm.conf(其所在目录为PHP安装目录/etc/php-fpm.conf)中修改。user nobody//所属用户group nobody//所属组listen 127.0.0.1:9000//fpm所在服务器的ip地址和监听的端口号默认为9000pm dynamic//设置进程管理器是如何管理子进程的dynamic动态管理至少会有一个子进程被创建其数量有个最大值由pm.max_children来设定而创建的数量由pm.start_servers来设定static 静态管理设置固定数量的子进程随着服务启动而被创建ondemand 在服务启动的时候并不创建子进程只是当有请求的时候才根据情况创建。pm.max_children 10//当pm设置为static的时候此值表示随着服务的启动创建的子进程的数量当pm设置为dynamic或者ondemand的时候此值表示创建的子进程最多不能超过此数量pm.start_servers 2//表示随着服务启动创建的子进程(注意这里是子进程而不是线程)的数量此选项只有在pm 设置为dynamic的时候才有效。并且这个值默认设置为 min_spare_servers (max_spare_servers – min_spare_servers)/2并且如果此值设为0那么创建的子进程的数量也是由上述公式决定。pm.min_spare_servers 1//要求闲置的服务进程的数量的最小值pm.max_spare_servers 3//闲置的服务进程的数量的最大值pm.process_idle_timeout 10s//进程的闲置时间以秒为单位超过这个时间该进程将会被杀死Fpm 的应用下面我们来看一下如何管理fastcgi服务首先我们可以进入php安装目录~]# cd /usr/local/php5php5]# ./sbin/php-fpm//开启fastcgi服务开启服务以后会在/usr/local/php5/var/run/php-fpm.pid中有fastcgi主进程idphp5]# kill –INT cat /usr/local/php5/var/run/php-fpm.pid//关闭fastcgi服务php5]# kill –USR2 cat /usr/local/php5/var/run/php-fpm.pid//重启fastcgi服务Fpm 使用说明在fpm简单配置中我们提到pmdynamic和pm.start_servers 2。当开启fastcgi服务以后首先我们查看 php-fpm.pidphp5]# cat /usr/local/php5/var/run/php-fpm.pid //其结果为32407php5]# ps x | grep php-fpm //接着我们使用此命令查看其主进程情况32407 ? Ss 0:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)php5]# ps –ef | grep php-fpm //然后再使用该命令查看其所有进程情况root 32407 1 0 13:46 ? 00:00:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)nobody 32408 32407 0 13:46 ? 00:00:00 php-fpm: pool wwwnobody 32409 32407 0 13:46 ? 00:00:00 php-fpm: pool www在这里我们看到了三条信息第一条是主进程由系统创建其id为32407父进程id为1。剩余两条是其子进程因为在pm.start_servers 2 我们设置的为2所以随着服务的启动会创建两个子进程。这两个子进程的用户都是nobody(usernobody)其进程id分别是 32408、32409第三项是这两个子进程的父进程的id 32407。当然fpm至少会创建一个子进程因为如果start_servers 设置为0 那么其会根据上面我们说的那个公式计算出子进程的数量。当然如果我们设置min_spare_servers 和max_spare_servers都为0那子进程的数量为0这样的话是不能启动服务的(这些设置有效的前提是pm设为dynamic)。因为fpm使用用户为nobody的子进程来处理请求的那个由系统创建的主进程——id为32407所属用户为root——是不能处理请求的。当然我们可以根据我们服务器的实际情况(例如内存大小)来优化我们这里的进程数量。以上只是简单的介绍了fpm的配置与使用目的就是为了说明fpm的作用。本文原创发布php中文网转载请注明出处感谢您的尊重