【php-fpm】配置文件详解

参考:https://www.jianshu.com/p/c49bb7e0ca31

https://www.php.cn/php-weizijiaocheng-391985.html

php-fpm 配置

下面配置项的注释,是或摘或借鉴,有的没找到的。我翻译文档了(安装默认的一个www.conf.defaulf。每一项上面都会有对应的英文说明。)。

这些配置对应的struct 在./sapi/fpm/fpm/fpm_conf.h

[sock0]
listen = /dev/shm/php-fpm-7.0.sock ;指定sock通讯的文件地址 or  listen = 0.0.0.0:9000
listen.allowed_clients = 127.0.0.1 ;允许访问FastCGI进程的IP址
listen.backlog = 51200 ;跟tcp有关。参考[《TCP SOCKET中backlog参数的用途是什么?》](https://www.cnxct.com/something-about-phpfpm-s-backlog/)
listen.owner = nobody ;启动进程的用户
listen.group = nobody ;启动进程的组
listen.mode = 0660 ;用socket连接方式时,指定拥有unix socket权限的用户,默认和运行的用户一样;用tcp连接可以注释掉
user = nobody
group = nobody
pm = dynamic ;fpm 进程管理的三种模式 ,选项有static、dynamic、ondemand(按需模式)
pm.max_children = 256 ;子进程最大数
pm.start_servers = 10 ;启动时进程最大数
pm.min_spare_servers = 5 ;保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers = 10 ;保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_requests = 51200 ;设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0′ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
pm.status_path = /php-fpm-7-status ;FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none.
ping.path = /heart ;FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。
ping.response = check_ok ;用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.
request_terminate_timeout = 10 ;设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0′ 表示 ‘Off'.
当经常出现502错误时可以尝试更改此选项。
request_slowlog_timeout = 5  ;当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0′ 表示 ‘Off'
slowlog = /home/nobody/logs/php-fpm-7/www-slow.log ;慢请求的记录日志,配合request_slowlog_timeout使用
php_admin_value[error_log] = /app/webserver/logs/php-fpm-7/www-error.log ;可以覆盖php.ini的配置。你可以在一个php脚本里 输出phpinfo()然后看下配置的值。就明白了。另外文档中也说了这个配置不会被ini_set 覆盖。
php_admin_flag[log_errors] = on
rlimit_files = 102400 ;设置文件打开描述符的rlimit限制. 默认值: 系统定义值
系统默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。

上面pm = dynamic是配置进程的管理方式。有三种:

  • 静态模式(static):启动时master根据pm.max_children 配置fork出相应数量的worker进程,也就是worker进程数是固定不变是

  • 动态模式(dynamic):这种模式比较常用,fpm启动根据pm.start_servers 配置初始化一定数量的worker。运行期间master发现空闲worker数低于pm.min_spare_servers配置数(表示请求比较多,worker处理不过来)会fork worker进程,但总的worker数不能超过pm.max_children;如果master发现空闲worker数超过了pm.max_spare_servers(表示闲着的worker太多了)会杀掉一些worker,避免占用过多资源,master通过这4个值动态控制worker的数量。

  • 按需模式(ondemand):这种模式很像传统的cgi,在启动时不分配worker进程,等到有请求了后再通知master进程fork worker进程,来了请求后再fork子进程进行处理,总的worker数不超过pm.max_children,处理完后worker进程不会立即退出,当空闲时间超过pm.process_idle_timeout后再退出。



作者:言十年
链接:https://www.jianshu.com/p/c49bb7e0ca31
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值