PHP-FPM配置

PHP-FPM(PHP FastCGI Process Manager的简称,即PHP FastCGI进程管理器)是用于管理PHP进程池的软件,用于接收和处理来自Web服务器的请求。PHP-FPM软件会创建一个主进程(通常以操作系统中根用户身份运行),控制何时以及如何把HTTP请求转发给一个或多个子进程处理。PHP-FPM主进程还控制着什么时候创建(处理Web应用更多的流量)和销毁(子进程运行时间太久或不再需要了)PHP子进程。PHP-FPM进程池中的每个进程存在的时间都比单个HTTP请求长,可以处理10、50、100、500或更多的HTTP请求。

全局配置

源码编译的php-fpm配置文件为/usr/local/php/etc/php-fpm.conf

1
2
emergency_restart_threshold = 10 # 在指定一段时间内,如果失效的PHP-FPM了进程超过这个值,PHP-FPM主进程就优雅重启
emergency_restart_interval = 10 # 设定emergency_restart_threshold设置采用的时间跨度

配置进程池

源码编译的php-fpm配置文件为/usr/local/php/etc/php-fpm.d/www.conf
各个PHP-FPM进程池都以指定的操作系统用户和用户组的身份运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
user = nobody # 拥有这个PHP-FPM进程池中子进程的系统用户。要把这个设置的值设为运行PHP应用的非根用户的用户名。
group = nobody # 拥有这个PHP—FPM进程池中子进程的系统用户组。要把这个设置的值设为运行PHP应用的非根用户所属的用户组名。

listen = 127.0.0.1:9000 # PHP-FPM进程池监听的IP地址和端口号,让PHP-FPM只接受从这里传入的请求。
listen.allowed_clients = 127.0.0.1 # 可以向这个PHP-FPM进程池发送请求的IP地址(一个或多个)。

pm.max_children = 51 # 这个设置设定任何时间点PHP—FPM进程池中最多能有多少个进程。
pm.start_servers = 3 # PHP-FPM启动时PHP-FPM进程池中立即可用的进程数。
pm.min_spare_servers = 2 # PHP应用空闲时PHP-FPM进程池中可以存在的进程数量最小值。
pm.max_spare_servers = 4 # PHP应用空闲时PHP-FPM进程池中可以存在的进程数量最大值。
pm.max_requests = 1000 # 回收进程之前,PHP-FPM进程池中各个进程最多能处理的HTTP请求数量。

slowlog = /usr/local/php/var/log/slowlog.log # 这个设置的值是一个日志文件在文件系统中的绝对路径。
request_slowlog_timeout = 5s # 当HTTP请求的处理时间超过指定的值,就把请求的回溯信息写入slowlog设置指定的日志文件。