栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

PHP-FPM探索

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP-FPM探索

先看一下PHP-FPM的配置参数:

pm = dynamic 如何控制子进程,选项有static和dynamic
pm.max_children:静态方式下开启的php-fpm进程数量
pm.max_requests:php-fpm子进程能处理的最大请求数

pm.start_servers:动态方式下的起始php-fpm进程数量
pm.min_spare_servers:动态方式下的最小php-fpm进程数
pm.max_spare_servers:动态方式下的最大php-fpm进程数量

区别:
如果pm设置为 static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。
如果pm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。
系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,
然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。
pm.start_servers缺省值计算公式: min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

选择哪种模式比较合适?

对于内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。
如果内存稍微小点,比如1G,那么指定动态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存,将不多的内存分配给其他应用去使用,会使系统的运行更加畅通。

开启多少个php-fpm进程才合适呢?

勒布朗飘说:看内存。简单三个字如雷贯耳。
也就是说,我们需要根据服务器的物理内存来决定最多能够开启多少个子进程。
一般php-fpm进程占用20~30m左右的内存就按30m算。如果单独跑php-fpm,子进程数量的最大值等于服务器物理内存Mem/30M,由于大家一般Nginx、MySQL都在一台机器上,于是预留一半给它们,即php-fpm进程数为$Mem/2/30。
比如,物理内存为2G的服务器,支持的最大的子进程数量为 2048M/2/30M = 34。开启100个子进程,一般要占用2~3G的内存。所以服务器的配置至少要8G了。

查看服务器物理内存,用free -h

如何查看当前子进程的数量?

ps -ef | grep php-fpm | egrep -v “master|grep” | wc -l
pstree | grep php-fpm

查看平均每个php-fpm进程的占用内存?以及所有进程占用的总内存?

查看平均每个php-fpm进程的占用内存:
ps -o “rss,cmd” -C php-fpm | awk ‘{ sum+=$1 } END { printf ("%d%sn", sum/NR/1024,“M”) }’
将php-fpm进程占用的平均大小,乘以进程的数量,就能得出进程的占用内存的总量。

其实上面的命令只要不除以NR(NR表示已经读出的记录数,就是行号,从1开始)就可以获取php-fpm进程占用的总内存:
ps -o “rss,cmd” -C php-fpm | awk ‘{ sum+=$1 } END { printf ("%d%sn", sum/1024,“M”) }’

也可以这样子写:
ps -aux | grep php-fpm | grep -v “grep” | awk ‘{sum += $6} END {print sum/1024}’

ps参数说明:
-C:指定进程名称
-o:指定显示的参数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740486.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号