阅读量:0
php-fpm启动参数包括
-F
指定配置文件,-c
设置配置目录,-d
设置守护进程模式等。重要配置项有pm.max_children
、pm.start_servers
、pm.min_spare_servers
、pm.max_spare_servers
、request_terminate_timeout
等。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 -INT cat /usr/local/php/var/run/php-fpm.pid`` | 关闭php-fpm |
kill -USR2 cat /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_children
、pm.start_servers
、pm.min_spare_servers
和pm.max_spare_servers
等参数来优化worker进程的数量,检查request_terminate_timeout
设置是否正确,以确保长时间运行的脚本不会因为没有正确中止而导致502错误。
以上就是关于“LNMP笔记:php-fpm – 启动参数及重要配置详解”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!