PHP-FPM(FastCGI Process Manager)的配置和优化讲解
PHP-FPM(FastCGI Process Manager:FastCGI Process Manager)是一个PHPFastCGI管理器,用于管理PHP进程区,接收并处理来自Web服务器的请求。 PHP-FPM 创建一个主进程,控制何时以及如何将 HTTP 请求发送到一个或多个 子进程s 进行处理。
全局配置
emergency_restart_threshold = 60(建议值)
如果子进程在emergency_restart_interval参数设置的时间收到此参数设置的SIGSEGV或SIGBUS输出信息编号,FPM将重启。
emergency_restart_interval = 1m
用于设置软重启间隔时,单位为:s(秒)、m(分钟)、h(小时)或 d(天)。默认单位:s(秒)。
这两个设置的目的是如果指定的子进程在指定的时间段内失败则重新启动PHP-FPM。
这两项设置默认关闭,建议打开。
流程区域配置
PHP-FPM 有一个Area Definitions 区域,即流程区域。通常建议 PHP 应用程序使用进程池。
PHP-FPM 配置文件默认有一个配置内容,名为 www.
user = 运行 PHP 的非 root 用户
子进程 以用户身份运行。必须设置它。
group = 使用 PHP 的非 root 用户所属的用户组
子进程 运行的用户组。如果未设置,则使用默认用户组。
listen = 127.0.0.1:9000 或 /path/k/unix/socket
设置接受 FastCGI 请求的地址。
listen.allowed_clients = 127.0.0.1
设置可以连接FastCGI的服务器的IP地址。默认情况下,该字段被注释掉,建议打开它。
pm=生产环境静态
设置流程管理器来管理子进程。可用值:静态、按需、动态。
- 静态:子进程的数量是固定的(pm.max_children)。
- ondemand:当有需求时生成进程(按需,与动态相反,pm.start_servers 在服务启动时启动。
- 动态:子进程s 的数量根据以下配置动态设置:pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。
pm.max_children =
设置PHP-FPM进程池中可以存在的最大进程数。这个没有绝对正确的值,应该根据实际情况来设置。
假设每个PHP进程使用20-30M内存,整个PHP-FPM环境配置了512M内存,可以设置为17-25这个中间值。
pm.start_servers =
设置启动时创建的服务器数量。仅当 pm 设置为动态时使用。
pm.min_spare_servers =
设置最小空闲服务进程数。仅当 pm 设置为动态时使用。必须设置它。
pm.max_spare_servers =
设置最大空闲服务进程数。仅当 pm 设置为动态时使用。必须设置它。
pm.max_requests = 1000
设置每次子进程重生之前收到的请求数量。对于可能存在内存泄漏的第三方模块非常有用。如果设置为“0”,请求将始终被接受。默认值:0。
slowlog =
慢请求日志。
注意PHP-FPM进程所属的用户和用户组必须有相应文件的写权限。
request_slowlog_timeout = 5
当请求超过设定的超时时间时,相关PHP调用堆栈信息将完整写入慢日志中。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网