PHP-FPM中的master与worker进程

PHP-FPM(FastCGI Process Manager)是用于管理PHP的FastCGI进程池的重要组件,可以有效提高PHP应用的性能和稳定性。在PHP-FPM中,主要是存在两种类型的进程:master进程和worker进程。它们分别承担不同的职责协同工作,以确保PHP应用的高效运行。

Master进程

作用

  1. 启动和管理worker进程:master进程负责启动配置中的worker进程,并确保它们在系统运行期间的正常工作。
  2. 加载配置文件:master进程在启动时加载PHP-FPM的配置文件php-fpm.conf/www.conf,并根据配置文件启动相应数量的worker进程。
  3. 信号处理和分发:master进程处理从操作系统接收到的信号(如启动,停止,重载,重启等)并分发给所有worker进程。

特点

  • 单一实例:在一个PHP-FPM实例中,通常只有一个master进程。
  • 长生命周期:它在PHP-FPM服务期间持续运行,直到服务停止。
  • 不直接处理请求:master进程本身不处理具体的客户端请求,而是管理worker进程来完成此任务。

Worker进程

作用

  1. 处理具体请求:worker进程负责接收和处理客户端(如Web服务器)发来的PHP请求。
  2. 执行PHP脚本:执行PHP代码并生成响应结果,然后将结果返回给客户端或Web服务器。
  3.  独立运行:每个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进程的内存使用情况进行监控,必要时设置定期重启机制,避免内存泄漏

 

posted @   X__cicada  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示