温馨提示×

ubuntu php fpm怎样优化性能

小樊
48
2026-09-04 12:51:37
栏目: 编程语言

在 Ubuntu 上优化 PHP-FPM 性能,通常从 PHP-FPM 配置、系统资源、OPcache、慢日志、连接方式 等方面入手。下面按「实用优先级」给你一份可落地的优化清单。


一、选择合适的 PHP-FPM 进程模型(最关键)

PHP-FPM 的 pm 模式直接决定性能与稳定性。

1. 动态模式(常用)

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

适合:

  • 流量波动较大
  • 内存有限

2. 静态模式(高并发、稳定)

pm = static
pm.max_children = 100

适合:

  • 高并发
  • 内存充足(如 8G+)

经验值:

pm.max_children ≈ 可用内存 / 单个 PHP 进程内存

查看单个 PHP 进程内存:

ps -ylC php-fpm --sort:rss

二、开启并优化 OPcache(必须)

安装

sudo apt install php-opcache

配置(php.ini)

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0  ; 生产环境建议关闭

重启:

sudo systemctl restart php-fpm

效果:通常提升 2–5 倍性能


三、使用 Unix Socket 而非 TCP

TCP 方式:

listen = 127.0.0.1:9000

✅ 推荐 Socket:

listen = /run/php/php-fpm.sock

Nginx 对应:

fastcgi_pass unix:/run/php/php-fpm.sock;

减少网络开销,延迟更低。


四、调整请求处理能力

request_terminate_timeout = 30s
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slow.log

防止:

  • 单请求拖垮整个 pool
  • 难以排查慢接口

五、分离不同站点(多 pool)

例如:

/etc/php/8.2/fpm/pool.d/
├── www.conf
├── api.conf
└── admin.conf

好处:

  • 不同业务隔离
  • 一个站点崩不影响其他

六、系统层面优化(Ubuntu)

1. 文件描述符

ulimit -n 65535

/etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

2. 禁用无用 PHP 模块

php -m

卸载不需要的扩展,减少内存占用。


七、监控与压测

查看状态

pm.status_path = /status

Nginx:

location /status {
    fastcgi_pass unix:/run/php/php-fpm.sock;
    include fastcgi_params;
}

压测

ab -n 1000 -c 100 http://site.com/

八、生产环境推荐配置示例(8G 内存)

pm = static
pm.max_children = 120

opcache.enable=1
opcache.memory_consumption=256

listen = /run/php/php-fpm.sock
request_terminate_timeout = 30s

如果你愿意,可以告诉我:

  • PHP 版本
  • Ubuntu 版本
  • 内存大小
  • 是否用 Nginx / Apache
  • 网站类型(API / CMS / 电商)

我可以直接给你一套 可复制的配置文件

0