php-fpm参数详解
欢迎关注我的公众号《pencil带你玩转Linux》,回复“Linux学习资料”获取视频教程哦。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pid = /var/run/php-fpm/php-fpm.pid #设置pid文件的位置,默认目录路径 /usr/local/php/var
error_log = /var/log/php-fpm/php-fpm.log #设置错误日志文件存放路径 ,默认目录路径 /usr/local/php/var
;syslog.facility = daemon #用于指定什么类型的程序日志消息。
;syslog.ident = php-fpm #用于FPM多实例甄别
log_level = warning #记录日志的等级,默认notice,可取值alert, error, warning, notice, debug
;emergency_restart_threshold = 0 # 如果子进程在这个时间段内带有IGSEGV或SIGBUS退出,则重启 fpm,默认0表示关闭这个功能
;emergency_restart_interval = 0 #设置时间间隔来决定服务的初始化时间(默认单位:s秒),可选s秒,m分,h时,d天
;process_control_timeout = 0 #子进程等待master进程对信号的回应(默认单位:s秒),可选s秒,m分,h时,d天
; process.max = 128 #控制最大进程数,使用时需谨慎
; process.priority = -19 # 处理nice(2)的进程优先级别-19(最高)到20(最低)
;daemonize = yes #将fpm转至后台运行,如果设置为“no”,那么fpm会运行在前台
;rlimit_files = 1024 #设置主进程文件描述符rlimit的数量
;rlimit_core = 0 #设置主进程rlimit最大核数
events.mechanism = epoll #使用处理event事件的机制, epool进程多路复用
;systemd_interval = 10 #使用 systemd 集成的 FPM 时,设置间歇秒数,报告健在通知给 systemd。 设置为 0 表示禁用。默认值:10。
[www]
;prefix = /path/to/pools/$pool # 如果没有制定,将使用全局prefix替代
user = www # 进程的发起用户和用户组,用户user是必须设置,group不是
group = www
listen = 127.0.0.1:9000 #监听ip和端口
;listen = /dev/shm/php-fpm.sock #设置接受 FastCGI 请求的地址。可用格式 为:'ip:port','port','/path/to/unix/socket'。每个进程池都需要设置。
listen.backlog = 8192 #设置listen(2)函数backlog,默认65535
listen.owner = www
#如果使用了 Unix 套接字,表示它的权限。在 Linux 中必须设置读/写 权限,以便用于 WEB 服务器连接。 在很多 BSD 派生的系统中可以 忽略权限允许自由连接。 默认值:运行所使用的用户和组,权限为 0660。
listen.group
= www #参见 listen.owner。
;listen.mode=0660 #参见 listen.owner。
;listen.acl_users
= #当系统支持 POSIX ACL(Access Control Lists)时,可以设置使用此选项。 当设置了的时候,将会忽略 listen.owner 和 listen.group。 值是逗号分割的用户名列表。 PHP 5.6.5 起可用。
;listen.acl_groups =
#参见 listen.acl_users。 值是逗号分割的用户组名称列表。 PHP 5.6.5 起可用。
;listen.allowed_clients = 127.0.0.1 #允许FastCGI客户端连接的IPv4地址,多个地址用','分隔,为空则允许任何地址发来链接请求 ;
;process.priority = -19
pm = static #选择进程池管理器如何控制子进程的数量 static: 对于子进程的开启数路给定一个锁定的值(pm.max_children) dynamic: 子进程的数目为动态的,它的数目基于下面的指令的值(以下为dynamic适用参数)
pm.max_children = 300 #同一时刻能够存货的最大子进程的数量,ps -ef | grep php-fpm | grep -v 'grep' | grep -v 'master' ,将会看到300个php-fpm进程
pm.start_servers = 50 #在启动时启动的子进程数量
pm.min_spare_servers = 50 #处于空闲"idle"状态的最小子进程,如果空闲进程数量小于这个值,那么相应的子进程会被创建
pm.max_spare_servers = #50 最大空闲子进程数量,空闲子进程数量超过这个值,那么相应的子进程会被杀掉。
;pm.process_idle_timeout = 10s; #空闲进程超时时间
;pm.max_requests = 10240 #在派生新的子进程前,每一个子进程应该处理的请求数目,在第三方库中解决内存溢出很有用,设置为0则不会限制,默认500
;pm.status_path = /ping 配置一个URI,以便查看fpm状态页
状态页描述:
accepted conn: 该进程池接受的请求数量
pool: 进程池的名字
process manager: 进程管理,就是配置中pm指令,可以选择值static,dynamic,ondemand
idle processes: 空闲进程数量
active processes: 当前活跃的进程数量
total processes: 总的进程数量=idle+active
max children reached: 达到最大子进程的次数,达到进程的限制,当pm试图开启更多的子进程的时候(仅当pm工作在dynamic时)
;ping.response = pong #用于定制平请求的响应,响应的格式text/plain(对200响应代码)
;access.log = log/$pool.access.log
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
slowlog = /var/log/php-fpm/$pool.log.slow #用于记录慢查询的日志
request_slowlog_timeout = 5 # 慢日志请求超时时间,对一个php程序进行跟踪。 request_terminate_timeout = 0 #终止请求超时时间,在worker进程被杀掉之后,提供单个请求的超时间隔。由于某种原因不停止脚本执行时,应该使用该选项,0表示关闭不启用 (在php.ini中,max_execution_time 一般设置为30,表示每一个脚本的最大执行时间)
;rlimit_files = 1024 #设置打开文件描述符的限制
;rlimit_core = 0 #设置内核对资源的使用限制,用于内核转储
;chroot = #设置chroot路径,程序一启动就将其chroot放置到指定的目录下,该指令值必须是一个绝对路径
;chdir = /var/www #在程序启动时将会改变到指定的位置(这个是相对路径,相对当前路径或chroot后的“/”目录)
;catch_workers_output = yes #将worker的标准输出和错误输出重定向到主要的错误日志记录中,如果没有设置,根据FastCGI的指定,将会被重定向到/dev/null上
;clear_env = no #清理环境
;security.limit_extensions = .php .php3 .php4 .php5 #限制FPM执行解析的扩展名
还可以在为一个运行池传递附加的环境变量,或者更新 PHP 的配置值。可以在进程池配置文件中如下面的配置参数来做到:
Example #1 给运行池传递环境变量和设置 PHP 的配置值
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
PHP配置值通过 php_value 或者 php_flag 设置,并且会覆盖以前的值。请注意 disable_functions 或者 disable_classes 在 php.ini 之中定义的值不会被覆盖掉,但是会将新的设置附加在原有值的后面。
使用 php_admin_value 或者 php_admin_flag 定义的值,不能被 PHP 代码中的 ini_set() 覆盖。
详情请参考php-fpm官方文档:https://www.php.net/manual/zh/install.fpm.configuration.php