进程的管理存在两种风格——static和dynamic

pmpm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers

pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。

4个参数的意思分别为:

PM.MAX_CHILDREN:静态方式下开启的PHP-FPM进程数量。
PM.START_SERVERS:动态方式下的起始PHP-FPM进程数量。
PM.MIN_SPARE_SERVERS:动态方式下的最小PHP-FPM进程数量。
PM.MAX_SPARE_SERVERS:动态方式下的最大PHP-FPM进程数量。

如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。

如果dm设置为dynamic,那么pm.max_children参数失效,后面3个参数生效。系统会在php-fpm运行开始的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。

编辑文件

/usr/local/php/etc/php-fpm.conf   #我装的是军哥的lnmp

error_log = /app/logs/php-fpm.log  #指定pid路径

log_level = error                        #开启日志,log级别为error

events.mechanism = epoll         #使用epoll模式

listen.owner = www                    #使用php的用户

listen.group = www

pm.max_children = 52            #php-fpm最大的进程数,可以根据内存大小/40M得到

pm.start_servers = 5                #php初始启动子进程数量

pm.min_spare_servers = 5        #php最小空闲进程数量

pm.max_spare_servers = 25        #php最大空闲进程数量

pm.process_idle_timeout = 20s;    #进程超时时间

pm.max_requests = 2048            #每个子进程退出之前可以进行的请求数

slowlog = /app/logs/$pool.log.slow    #开启慢查询日志(执行程序时间长了可以查看到)

rlimit_files = 32768                        #开启文件描述符数量

request_terminate_timeout = 100

request_slowlog_timeout = 10        #慢查询的超时时间,超时10秒记录