FPM鲜为人知的三种模式
更新时间:2023-11-08FPM鲜为人知的三种模式
什么是FPM
与传统的CGI/FASTCGI模式相比,FPM是PHP专用的,性能更加出色,能够处理大量的并发请求,是目前PHP应用化集群部署的重要组件,主要的作用是管理与处理PHP子进程池,并且提供进程池的进程管理与监控、负载均衡以及进程管理策略的调整。
首先介绍FPM的三种模式
1. 动态模式
所谓动态模式是指每个请求都会fork出一个php-cgi进程,并在请求完成后正常结束,它的优势在于节省系统内存,同时在下游处理不再存在bug时能够将一个php-cgi进程的进程数最大限度地降低。代码如下:
[www] pm=dynamic pm.start_servers=5 pm.min_spare_servers=2 pm.max_spare_servers=8 pm.max_children=100 pm.process_idle_timeout=10s
2. 静态模式
所谓静态模式就是指进程池中的子进程数为一定固定数值不会改变。进程池数值的调整需要修改php-fpm.conf中的pm.max_children。当然,如果系统无法支持过多的进程时,进程池的最大数值需要适当控制。代码如下:
[www] pm=static pm.max_children=10
3. 混合模式
所谓混合模式就是指把上述两种模式融合在一起使用,可以适当地解决一些负载均衡和特殊压力情况下的问题。代码如下:
[www] pm=ondemand pm.max_requests=1000 pm.process_idle_timeout=10s
总结
总之,FPM的三种模式都有各自的优势和限制,开发人员可以根据不同的情况选择最适合自己的模式来发挥FPM的最大潜力。