天天看点

php-fpm.conf 配置文件详解

[global]

pid = run/php-fpm.pid

error_log = log/php-fpm.log

log_level = notice

#错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.

rlimit_files = 65535

#设置核心rlimit最大限制值.

[www]

user = joy

group = joy

listen = 127.0.0.1:9000

#fpm监听端口,即nginx中php处理的地址

listen.backlog = 2048

#backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。

pm = dynamic

pm.max_children = 1024

#,子进程最大数

pm.start_servers = 10

#控制服务启动时创建的进程数

pm.min_spare_servers = 10

#,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程

pm.max_spare_servers = 60

#保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

pm.max_requests = 102400

#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 ‘0’ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.

request_terminate_timeout = 10s

#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的’max_execution_time’因为某些特殊原因没有中止运行的脚本有用. 设置为 ‘0’ 表示 ‘Off’.当经常出现502错误时可以尝试更改此选项。

request_slowlog_timeout = 10s

#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 ‘0’ 表示 ‘Off’

slowlog = var/log/$pool.log.slow

#慢请求的记录日志,配合request_slowlog_timeout使用

  • 设置”max_children”也需要根据服务器的性能进行设定,一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右,因 此我的”max_children”我设置成40个,20M*40=800M也就是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于我的有 效内存1Gb。而如果我的”max_children”设置的较小,比如5-10个,那么php-cgi就会“很累”,处理速度也很慢,等待的时间也较 长。如果长时间没有得到处理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad gateway这个错误。
  • nginx会直接把 请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由nginx把结果反馈给客户端浏览器

原文链接

php