PHP-FPM(FastCGI Process Manager)是一个用于管理PHP FastCGI进程的工具,它在Linux系统上运行并负责处理PHP脚本的执行。PHP-FPM提供了多种连接管理选项,以便根据服务器的负载和需求进行优化。
以下是PHP-FPM在Linux上的一些关键连接管理设置:
监听模式:PHP-FPM支持多种监听模式,包括Unix套接字(unix socket)和TCP/IP套接字(tcp socket)。Unix套接字通常比TCP/IP套接字更快,因为它们避免了网络堆栈的开销。在配置文件(通常是php-fpm.conf或www.conf)中,可以通过listen指令设置监听模式。
listen = /var/run/php-fpm/php-fpm.sock
或者
listen = 127.0.0.1:9000
进程管理:PHP-FPM允许您配置进程池的大小和行为。这包括主进程(master process)和工作进程(worker processes)。在配置文件中,可以通过pm指令设置进程管理类型(如dynamic、static或ondemand),并通过pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers等指令设置进程池的大小。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
连接超时:PHP-FPM允许您设置FastCGI连接的超时时间。这有助于防止慢速请求占用资源。在配置文件中,可以通过request_terminate_timeout指令设置超时时间(以秒为单位)。
request_terminate_timeout = 30s
慢日志:PHP-FPM提供了一个慢日志功能,用于记录执行时间超过指定阈值的请求。这有助于识别性能瓶颈。在配置文件中,可以通过slowlog指令设置慢日志文件的路径,并通过slowlog_timeout指令设置记录慢请求的时间阈值(以秒为单位)。
slowlog = /var/log/php-fpm/slow.log
slowlog_timeout = 10s
事件驱动:PHP-FPM 7.0及更高版本支持事件驱动(event-driven)模式,该模式使用epoll(Linux)或kqueue(BSD/macOS)系统调用优化并发连接处理。在配置文件中,可以通过pm指令将进程管理类型设置为event。
pm = event
通过调整这些设置,您可以根据服务器的需求优化PHP-FPM的性能。在更改配置文件后,请确保重新启动PHP-FPM服务以使更改生效:
sudo systemctl restart php-fpm