LNMP环境下如何正确配置php-fpm的启动参数和关键设置?

avatar
作者
猴君
阅读量:0
php-fpm启动参数包括-F指定配置文件,-c设置配置目录,-d设置守护进程模式等。重要配置项有pm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_serversrequest_terminate_timeout等。

LNMP笔记:php-fpm – 启动参数及重要配置详解

LNMP环境下如何正确配置php-fpm的启动参数和关键设置?

php-fpm的启动参数

命令 功能描述
/usr/local/php/sbin/php-fpm -t 测试php-fpm配置
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t 测试php-fpm配置,指定配置文件路径
/usr/local/php/sbin/php-fpm 启动php-fpm
kill -INTcat /usr/local/php/var/run/php-fpm.pid`` 关闭php-fpm
kill -USR2cat /usr/local/php/var/run/php-fpm.pid`` 重启php-fpm

php-fpm.conf重要参数详解

参数 功能描述
pid = run/php-fpm.pid PID文件路径,默认在安装目录中的var/run/php-fpm.pid
error_log = log/php-fpm.log 错误日志文件路径,默认在安装目录中的var/log/php-fpm.log
log_level = notice 错误级别,可用级别为: alert, error, warning, notice, debug,默认为notice
emergency_restart_threshold = 60 表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过此值,php-fpm就会优雅重启,一般保持默认值
process_control_timeout = 0 设置子进程接受主进程复用信号的超时时间,可用单位: s(秒), m(分), h(小时), 或者 d(天),默认单位: s(秒),默认值: 0
daemonize = yes 后台执行fpm,默认值为yes,如果为了调试可以改为no
listen = 127.0.0.1:9000 fpm监听端口,即nginx中php处理的地址,一般默认值即可,可用格式为: 'ip:port', 'port', '/path/to/unix/socket',每个进程池都需要设置
user = www 启动进程的用户
group = www 启动进程的用户组
pm = dynamic 如何控制子进程,选项有static和dynamic,如果选择static,则由pm.max_children指定固定的子进程数,如果选择dynamic,则由以下参数决定:
pm.max_children = 50 子进程最大数
pm.start_servers = 5 启动时的进程数
pm.min_spare_servers = 5 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers = 35 保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
pm.max_requests = 500 设置每个子进程重生之前服务的请求数,对于可能存在内存泄漏的第三方模块来说是非常有用的,如果设置为 '0' 则一直接受请求,等同于 PHP_FCGI_MAX_REQUESTS 环境变量,默认值: 0
pm.status_path = /status FPM状态页面的网址,如果没有设置, 则无法访问状态页面,默认值: none
ping.path = /ping FPM监控页面的ping网址,如果没有设置, 则无法访问ping页面,该页面用于外部检测FPM是否存活并且可以响应请求,请注意必须以斜线开头 (/),默认值: none
ping.response = pong 用于定义ping请求的返回相应,返回为 HTTP 200 的 text/plain 格式文本,默认值: pong
request_terminate_timeout = 0 设置单个请求的超时中止时间,该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用,设置为 '0' 表示 'Off',当经常出现502错误时可以尝试更改此选项
request_slowlog_timeout = 10s 当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中,设置为 '0' 表示 'Off'
slowlog = log/$pool.log.slow 慢请求的记录日志,配合request_slowlog_timeout使用
rlimit_files = 1024 设置文件打开描述符的rlimit限制,默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改
rlimit_core = 0 设置核心rlimit最大限制值,可用值: 'unlimited' 、0或者正整数,默认值: 系统定义值
chroot = 启动时的Chroot目录,所定义的目录需要是绝对路径,如果没有设置, 则chroot不被使用
chdir = 设置启动目录,启动时会自动Chdir到该目录,所定义的目录需要是绝对路径,默认值: 当前目录,或者/目录(chroot时)
catch_workers_output = yes 重定向运行过程中的stdout和stderr到主要的错误日志文件中,如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null,默认值: no

常见问题与解答

1、问题:为什么php-fpm需要重启?

解答: 在某些情况下,如配置文件更改或内存泄漏问题导致服务不稳定时,需要重启php-fpm来应用新的配置或清理内存泄漏导致的僵死进程,通过发送USR2信号可以平滑地重新加载所有worker进程并重新载入配置和二进制模块。

2、问题:如何处理php-fpm的502错误?

解答: 502错误通常与worker进程不足或配置不当有关,可以通过调整pm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers等参数来优化worker进程的数量,检查request_terminate_timeout设置是否正确,以确保长时间运行的脚本不会因为没有正确中止而导致502错误。

以上就是关于“LNMP笔记:php-fpm – 启动参数及重要配置详解”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!