摘要:首先,我们关注下的运行方式模式始终保持一个固定数量的子进程,这个数由定义,这种方式很不灵活,也通常不是默认的。指的是每个子进程在处理了多少个请求数量之后就重启。
首先,我们关注下 PHP-FPM 的运行方式:
pm = static模式:
始终保持一个固定数量的子进程,这个数由pm.max_children定义,这种方式很不灵活,也通常不是默认的。
优点是不用动态的判断负载情况,提升性能;缺点是多占用些系统内存资源。在内存足够的前提下性能最强
用此模式每天需要设置固定时间重启php
pm = dynamic模式:
启动时,会产生固定数量的子进程(由pm.start_servers控制)可以理解成最小子进程数,而最大子进程数则由pm.max_children去控制,OK,这样的话,子进程数会在最大和最小数范围中变化,还没有完,闲置的子进程数还可以由另2个配置控制,分别是pm.min_spare_servers和pm.max_spare_servers,也就是闲置的子进程也可以有最小和最大的数目,而如果闲置的子进程超出了pm.max_spare_servers,则会被杀掉。
pm = ondemand模式:
这种模式和pm = dynamic相反,把内存放在第一位,他的工作模式很简单,每个闲置进程,在持续闲置了pm.process_idle_timeout秒后就会被杀掉,有了这个模式,到了服务器低峰期内存自然会降下来,如果服务器长时间没有请求,就只会有一个php-fpm主进程,当然弊端是,遇到高峰期或者如果pm.process_idle_timeout的值太短的话,无法避免服务器频繁创建进程的问题,因此pm = dynamic和pm = ondemand谁更适合视实际情况而定。
PHP-FPM 子进程数量,是不是越多越好?
当然不是,pm.max_chindren,进程多了,增加进程管理的开销以及上下文切换的开销。
更核心的是,能并发执行的 php-fpm 进程不会超过 cpu 个数。
如何设置,取决于你的代码
如果代码是 CPU 计算密集型的,pm.max_chindren 不能超过 CPU 的内核数。
如果不是,那么将 pm.max_chindren 的值大于 CPU 的内核数,是非常明智的。
国外技术大拿给出这么个公式:
在 N + 20% 和 M/m 之间。
N 是 CPU 内核数量。
M 是 PHP 能利用的内存数量。
m 是每个 PHP 进程平均使用的内存数量。
适用于 dynamic 方式。
static方式:M/(m * 1.2)
当然,还有一种保险的方式,来配置 max_children。适用于 static 方式。
先把 max_childnren 设置成一个比较大的值。
稳定运行一段时间后,观察 php-fpm 的 status 里的 max
active processes 是多少
然后把 max_children 配置比它大一些就可以了。
pm.max_requests:指的是每个子进程在处理了多少个请求数量之后就重启。
这个参数,理论上可以随便设置,但是为了预防内存泄漏的风险,还是设置一个合理的数比较好
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29191.html
摘要:首先,我们关注下的运行方式模式始终保持一个固定数量的子进程,这个数由定义,这种方式很不灵活,也通常不是默认的。指的是每个子进程在处理了多少个请求数量之后就重启。 首先,我们关注下 PHP-FPM 的运行方式:pm = static模式: 始终保持一个固定数量的子进程,这个数由pm.max_children定义,这种方式很不灵活,也通常不是默认的。优点是不用动态的判断负载情况,提升性能;...
摘要:是用于管理进程池的软件,用于接收和处理服务器的请求。这个两个设置默认是关闭的,建议开启,进程池配置中有一个的区域,意为进程池,通常建议一个应用使用一个进程池。配置文件有默认名为的配置内容。总结没有固定的配置,要根据实际情况设置。 PHP-FPM 是用于管理 PHP 进程池的软件,用于接收和处理 Web 服务器的请求。PHP-FPM 会创建一个主进程,控制何时以及如何把 HTTP 请求转...
摘要:等平台平台由于我开发以为主,所以就用的环境配置来学习。启动进程的用户和用户组,进程运行的用户必须要设置。模式模式,表示启动进程是动态分配的,随着请求量动态变化的。 centos等linux平台 /usr/local/php/php /usr/local/php/etc/php.ini /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-...
摘要:等平台平台由于我开发以为主,所以就用的环境配置来学习。启动进程的用户和用户组,进程运行的用户必须要设置。模式模式,表示启动进程是动态分配的,随着请求量动态变化的。 centos等linux平台 /usr/local/php/php /usr/local/php/etc/php.ini /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-...
阅读 4674·2021-09-22 16:06
阅读 2073·2021-09-22 15:22
阅读 1409·2019-08-30 15:54
阅读 2510·2019-08-30 15:44
阅读 2341·2019-08-29 16:31
阅读 2009·2019-08-29 16:26
阅读 2327·2019-08-29 12:41
阅读 729·2019-08-29 12:22