c语言编程笔录

首页 >   > 笔记大全

笔记大全

FPM鲜为人知的三种模式

更新时间:2023-11-08

FPM鲜为人知的三种模式

什么是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的最大潜力。