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