PHP-FPM中的master与worker进程
PHP-FPM(FastCGI Process Manager)是用于管理PHP的FastCGI进程池的重要组件,可以有效提高PHP应用的性能和稳定性。在PHP-FPM中,主要是存在两种类型的进程:master进程和worker进程。它们分别承担不同的职责协同工作,以确保PHP应用的高效运行。
Master进程
作用
- 启动和管理worker进程:master进程负责启动配置中的worker进程,并确保它们在系统运行期间的正常工作。
- 加载配置文件:master进程在启动时加载PHP-FPM的配置文件php-fpm.conf/www.conf,并根据配置文件启动相应数量的worker进程。
- 信号处理和分发:master进程处理从操作系统接收到的信号(如启动,停止,重载,重启等)并分发给所有worker进程。
特点
- 单一实例:在一个PHP-FPM实例中,通常只有一个master进程。
- 长生命周期:它在PHP-FPM服务期间持续运行,直到服务停止。
- 不直接处理请求:master进程本身不处理具体的客户端请求,而是管理worker进程来完成此任务。
Worker进程
作用
- 处理具体请求:worker进程负责接收和处理客户端(如Web服务器)发来的PHP请求。
- 执行PHP脚本:执行PHP代码并生成响应结果,然后将结果返回给客户端或Web服务器。
- 独立运行:每个woker进程独立运行,处理独立请求,不影响其他worker进程。
特点
- 多实例:可以有多个worker进程同时存在,由master进程管理。具体数量根据配置文件和服务器负载进行调整。
- 短生命周期:worker进程处理一定数量的请求或运行一段时间后会自动重启,以避免内存泄漏等问题的影响。
- 高性能:worker进程的并行处理能力提升了系统的整体性能。
进程间通信
信号机制:master进程通过信号机制与worker进程通信。常见的信号有:
SIGTERM:平滑停止服务,停止所有进程。
SIGINT:立即停止服务,停止所有进程。
SIGQUIT:平滑退出服务,worker进程处理完任务后退出。
SIGUSR1:重启所有worker进程。
SIGUSR2:重新加载PHP-FPM配置文件并重启worker进程。
SIGCONT:恢复暂停的服务。
表格总结
类型 | 主要作用 | 特点 |
master |
启动和管理worker进程, 加载配置文件, 信号处理和分发 |
单一实例, 长生命周期, 不直接处理请求。 |
worker |
处理和响应客户端请求, 执行PHP代码 |
多实例, 短生命周期, 高性能,可并行处理请求 |
master和worker的运行流程
1 启动:
启动PHP-FPM服务时,Master进程初始化并根据配置文件生成Worker进程。
Worker进程开始监听来自Web服务器的FastCGI请求
2 处理请求
Web服务器通过FastCGI协议将请求发送给PHP-FPM。
Master将请求分发给空闲的Worker进程。
Worker进程解析PHP脚本,生成响应并返回给Web服务器
3 回收与重启
Worker进程达到一定的请求数后pm.max_requests会被回收,以避免内存泄漏
Master进程会自动启动新的Worker进程以保持可用数量。
性能优化建议
1.合理配置Worker数量
根据CPU核心数,内存和业务复杂度配置Worker数量。通常是CPU核心数*1-4.
2.异步非阻塞
Worker进程中尽量使用异步非阻塞操作,避免一个Worker被长时间占用。
3.监控Master和Worker的状态
使用日志和监控工具来观察进程的健康状态,及时处理异常。
4.进程回收
对Worker进程的内存使用情况进行监控,必要时设置定期重启机制,避免内存泄漏
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!