返回博客
一月 13, 2026指南

如何配置 PHP-FPM 以获得最佳性能

配置 PHP-FPM 池设置、性能调优以及与 Nginx 集成的完整指南。

如何配置 PHP-FPM 以获得最佳性能

PHP-FPM (FastCGI 进程管理器) 是一种替代的 PHP FastCGI 实现,具有适用于高流量网站的其他功能。正确的配置可以显著提高服务器的性能和资源利用率。

安装 PHP-FPM

bash
# Ubuntu/Debian
sudo apt update
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl -y

# CentOS/RHEL
sudo yum install php-fpm php-mysql php-mbstring php-xml php-curl -y

# 启动并启用 PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

配置 PHP-FPM 池

编辑池配置文件以优化性能:

bash
sudo nano /etc/php/8.1/fpm/pool.d/www.conf

# 关键设置:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data

# 进程管理
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

性能调优

根据服务器资源优化 PHP-FPM:

bash
# 计算最佳 max_children:
# (总内存 - 其他服务) / (每个 PHP 进程的内存)
# 例如:(2GB - 500MB) / 50MB = 30 max_children

# 编辑 php.ini 以获得更好的性能
sudo nano /etc/php/8.1/fpm/php.ini

# 推荐设置:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

# 重启 PHP-FPM
sudo systemctl restart php-fpm

Nginx 配置

配置 Nginx 与 PHP-FPM 协同工作:

bash
sudo nano /etc/nginx/sites-available/yourdomain.com

# 添加 PHP 处理:
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

# 测试并重新加载 Nginx
sudo nginx -t
sudo systemctl reload nginx

监控 PHP-FPM

bash
# 检查 PHP-FPM 状态
sudo systemctl status php-fpm

# 查看 PHP-FPM 进程
ps aux | grep php-fpm

# 检查池状态(如果启用了状态页面)
curl http://localhost/status

# 查看日志
sudo tail -f /var/log/php8.1-fpm.log

PHP-FPM 优化提示

  • 根据可用 RAM 调整 pm.max_children
  • 大多数用例使用 pm = dynamic
  • 设置 pm.max_requests 以防止内存泄漏
  • 启用 opcache 以获得更好的性能
  • 定期监控 PHP-FPM 状态
  • 为不同应用程序使用单独的池
  • 保持 PHP 和 PHP-FPM 更新