1、top运行后按M,查看内存占用排序

ps -fe |grep “php-fpm”|grep “pool”|wc -l  //查看当前php-fpm总进程数

ps -ylC php-fpm –sort:rss  //查看进程占用内存状态

ps -e -o ‘pid,comm,args,pcpu,rsz,vsz,stime,user,uid’|grep www|sort -nrk5 //查看当前php-fpm进程的内存占用情况及启动时间

ps –no-headers -o “rss,cmd” -C php-fpm | awk ‘{ sum+=$1 } END { printf (“%d%s\n”, sum/NR/1024,”M”) }’  //查看当前php-fpm进程平均占用内存情况,一般来说一个php-fpm进程占用的内存为30-40MB,本次查询的结果是60MB,显然是多了

/etc/php/7.4/fpm/php-fpm.conf 配置文件说明

解决php-fpm进程占用内存大问题
调整管理模式
static管理模式适合比较大内存的服务器,而dynamic则适合小内存的服务器,你可以设置一个pm.min_spare_servers和pm.max_spare_servers合理范围,这样进程数会不断变动。ondemand模式则更加适合微小内存,例如512MB或者256MB内存,以及对可用性要求不高的环境。

减少php-fpm进程数
如果你的VPS主机的内存被占用耗尽,可以检查一下你的php-fpm进程数,按照php-fpm进程数=内存/2/30来计算,1GB内存适合的php-fpm进程数为10-20之间,具体还得根据你的PHP加载的附加组件有关系。

php-fpm配置示例
这里以1GB内存的VPS配置php-fpm为演示,实际操作来看设置数值还得根据服务器本身的性能、PHP等综合考虑。

在PHP-FPM中,可以通过pm.max_requests参数来控制每个进程处理多少个请求后被重启。该参数指定了每个PHP-FPM进程在处理多少个请求后将被重启,以防止内存泄漏和其他资源泄漏问题。默认情况下,该值设置为0,表示不限制请求数量,而是使用request_terminate_timeout参数来控制进程的生命周期。

如果将pm.max_requests参数设置为一个大于0的整数,则PHP-FPM将在每个进程处理指定数量的请求后重启该进程。这有助于释放已分配的内存和其他资源,以防止进程在长时间运行后变得不稳定或无法处理更多请求。重启进程后,PHP-FPM将创建一个新的进程来接管未完成的请求,并继续处理新的请求。

需要注意的是,将pm.max_requests设置为一个过小的值可能会影响应用程序的性能,因为频繁的重启会导致PHP模块和扩展需要重新加载,增加了额外的开销。因此,应该根据具体情况来设置pm.max_requests参数的值,以平衡性能和稳定性的需求。
————————————————
2、