千家信息网

PHP-FPM配置与调优方式

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"PHP-FPM配置与调优方式",在日常操作中,相信很多人在PHP-FPM配置与调优方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PHP-FPM配置
千家信息网最后更新 2026年11月01日PHP-FPM配置与调优方式

这篇文章主要介绍"PHP-FPM配置与调优方式",在日常操作中,相信很多人在PHP-FPM配置与调优方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PHP-FPM配置与调优方式"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

PHP-FPM是啥?

PHP-FPM是一个PHP FastCGI的管理器,它实际上就是PHP源代码的补丁,旨在将FastCGI进程管理引进到PHP软件包中。

CGI是啥?

CGI全称"公共网关接口"(Common Gateway Interface),是HTTP服务器与其它机器上的程序进行通信的接口,其程序须运行在网络服务器上。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。

FastCGI是啥?优缺点。

FastCGI是一个常驻型的CGI,它可以一直执行,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute模式)。它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。我们知道,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保存在内存中并接受FastCGI进程管理器调度,那么就可以提供良好的性能、伸缩性等。
因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。

FastCGI工作原理(配置数量与内存大小关联)

Web服务器启动时,载入FastCGI进程管理器。
FastCGI进程管理器初始化,启动多个CGI解释器进程(PHP-CGI)并等待来自Web服务器的连接。
当客户端请求到达Web服务器时,FastCGI进程管理器选择并连接到一个CGI解释器,Web服务器将CGI环境变量和标准输入发送到FastCGI子进程PHP-CGI。


FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回给Web服务器。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web服务器中)的下一个连接。而在CGI模式中,PHP-CGI在此便退出了。


在上述情况中,可以想象CGI通常有多慢,每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展,并重初始化全部数据结构。而使用FastCGI,所有这些都只在进程启动时发生一次。另外,数据库持久连接可以工作。

NOTE:FastCGI的主要优点是把动态语言和HTTP Server分离开来,所以Nginx与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端Nginx服务器的压力,使Nginx专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求。

PHP-CGI

PHP-CGI是PHP自带的FastCGI管理器。
php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。
直接杀死php-cgi进程,php就不能运行了(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑重新生成新的子进程)。

Nginx+PHP配置

1、进程数优化

cd /usr/local/php/etc# ll-rw-r--r-- 1 root root  1228 5月  27 14:07 pear.conf-rw-r--r-- 1 root root   480 5月  27 14:19 php-fpm.conf-rw-r--r-- 1 root root 23046 5月  27 14:07 php-fpm.conf.default-rw-r--r-- 1 root root 73862 6月   3 18:14 php.ini

修改php-fpm.conf

pm = dynamic # 动态分配,如果pm设置为static,那么其实只有pm.max_children这个参数生效pm.max_children = 200 # 静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进程数pm.start_servers = 120 # 动态方式下的起始php-fpm进程数量pm.min_spare_servers = 5 # 动态方式空闲状态下的最小php-fpm进程数量pm.max_spare_servers = 180 # 动态方式空闲状态下的最大php-fpm进程数量

NOTE:如果pm设置为dynamic,4个参数都生效。系统会在php-fpm运行开始时启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。

2、最大请求数优化

pm.max_requests = 10240

NOTE:这个用来处理因为PHP解析器或引用的第三方库时,造成的内存泄露问题。
最大请求数:指一个php-fpm的工作进程在处理多少个请求后就终止掉。

3、最长执行时间优化(php.ini)

request_terminate_timeout = 100

NOTE:
php脚本取max_execution_time与request_terminate_timeout最小值作为脚本的超时时间。
这个是用来处理因为PHP执行时间超长而报502错误的解决。
这个时长配置可以在php.ini(max_execution_time)或php-fpm.conf中配置均可,为了不影响全局配置,可在php-fpm.conf中实现。
需要结合nginx.conf配置。

fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;

4、慢日志

request_slowlog_timeout = 2slowlog = /home/wwwlogs/php_fpm_slow.log

NOTE:
开启慢日志的目的是为了跟踪分析那条php脚本执行的时间超过了设置的request_slowlog_timeout时长,如果超过这个设置时间,那么该脚本就会被记录下。

5、关闭重启

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

6、查看进程数

# ps aux | grep -c php-fpm122

或

# ps aux | grep php-fpm | wc -l122

到此,关于"PHP-FPM配置与调优方式"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

进程 服务器 服务 配置 方式 动态 管理 内存 处理 时间 解释器 解释 数量 最大 脚本 语言 学习 运行 性能 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 互联网科技工作委员会副主任毛军 金融科技还是互联网 科技与互联网发展 万达互联网科技 科技与互联网的利与弊 来此购互联网科技有限公司 昭通互联网科技选哪家 厦门千工互联网科技有限公司 和信科技工业互联网 科技类公司包括互联网吗 长沙茂晟互联网科技有限公司 互联网科技大赛获奖感言 华中科技大学互联网的牛人 互联网相关科技技术 广州燕处互联网科技有限公司 三亚科技创新互联网基地 数字科技和互联网金融哪个好 河南商务圈互联网科技有限公司 东风日产互联网科技公司叫什么 互联网科技 湖北九亚互联网络科技有限公司 深圳科技互联网 北京互联网科技 天津摩尔互联网科技 杭州披云加互联网科技有限公司 富国互联网金融科技混合基金 互联网科技收购价值 张家口科技产业互联网平台 小牛互联网科技有限公司地址
0