php-fpm的进程管理方式pm是一个重要的参数,主要来控制子进程的数量。
pm进程管理方式有三种:
static:
表示在php-fpm运行时直接fork出 pm.max_chindren个子进程
dynamic:
表示,运行时fork出pm.start_servers个进程,随着负载的情况,动态的调整,最多不超过pm.max_children个进程。同时,保证闲置进程数不少于pm.min_spare_servers数量,否则新的进程会被创建,当然也不是无限制的创建,最多闲置进程不超过pm.max_spare_servers数量,超过则一些闲置进程被清理。
ondemand:
当有请求时,创建进程,启动不创建,最多不超过pm.max_chindren进程数,当进程闲置会在pm.process_idle_timeout秒后被及时释放。
如果选择配置pm参数?
dynamic适合小内存机器,灵活分配进程,省内存。static适用于大内存机器,动态创建回收进程对服务器资源也是一种消耗。一般大访问量应用不会选择ondemand,因为fork一次性大量进程开销很大。
PHP-FPM子进程数量应该如何设置?
一般生产环境会选择static方式
关于max_children, [能利用内存数/(单个进程内存数 * 1.2)];另外一种方式,可将其设置较大[能利用内存数/单个进程内存数],然后观察(PHP-FPM的运行状态),通过max active processes参数来合理配置。
关于start_servers、min_spare_servers、max_spare_servers官方有个建议公式:
start_servers = min_spare_servers + (max_spare_servers - min_spare_servers) / 2
C-Lens 常规参数规格
MCP (Model Context Protocol) 深度指南:协议原理、Python 实现与生产级安全实践
专访GEO落地工程师罗长才:以数据底座夯实风控防线 解析GEO工程落地全链路技术实践
BioMatrix: 一个模型:一套 token:真正原生统一生物序列:结构与语言
Nat. Med. | 哈佛医学院、罗氏与浙江大学联合发布COMPASS:可泛化AI预测跨癌种、跨治疗的免疫治疗响应
雅虎拍卖自动化竞拍系统开发:预约出价:防误拍:价格风控:自动兜底方案