PHP-FPM配置文件解读

221 阅读1分钟

php-fpm设置

[global]
pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

错误日志 log_level = notice

[www]

listen = /tmp/php-cgi.sock

监听模式 端口监听 和 sock套接字监听

listen.backlog = -1

listen.allowed_clients = 127.0.0.1

只允许本机监听端口

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

pm = dynamic

可用值:static,ondemand,dynamic。dynamic表示php-fpm进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加,保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理,保证多余的进程数不多于pm.max_spare_servers。static表示php-fpm进程数是静态的, 进程数自始至终都是pm.max_children指定的数量,不再增加或减少。 pm.max_children = 300 动态最大进程数 8G内存建议值为300 pm.start_servers = 30

pm.min_spare_servers = 30

pm.max_spare_servers = 300

request_terminate_timeout = 100

php-fpm 进程执行时间 设置要大于 php-fpm的超时时间 不然容易502 异常

request_slowlog_timeout = 5

php-fpm 慢日志记录阀值时间 大于5s 会被记录

slowlog = var/log/slow.log

慢日志目录

fpm超时和脚本超时的区别

php-fpm:

request_terminate_timeout = 0

php.ini:

max_execution_time = 30

request_terminate_timeout 适用于,当max_execution_time由于某种原因无法终止脚本的时候,会把这个php-fpm请求干掉。 再看看max_execution_time的注释:这设置了脚本被解析器中止之前允许的最大执行时间,默认是30s。看样子,我这个请求应该是被max_execution_time这个设置干掉了。 web请求php执行时间受到2方面控制,一个是php.ini的max_execution_time(要注意的是sleep,http请求等待响应的时间是不算的,这里算的是真正的执行时间),另一个是php-fpm request_terminate_timeout 设置,这个算的是请求开始n秒