php-fpm进程数的设定
今天同时跑了两个大量的定时任务,导致进程满载,cpu飙升,内存使用率100%,服务器异常缓慢无法正常操作
解决这个问题的方法是:
使用命令top查看使用情况:
最初是8G的内存 使用了7.6G,图片是优化后的
查看进程数前40的情况
ps auxw|head -1;ps auxw|sort -rn -k4|head -40
通过上图可以发现有很多php-fpm的进程,又查看php-fpm的进程个数
ps -ef |grep php-fpm:\ pool\ www|wc -l
调整进程开启数量
要设置php进程数量。需要在php-fpm.conf文件中修改。
初始化设置是400进程,8g的内存调整为100个进程就够用。修改之后重新php服务即可
service php-fpm restart
下面4个参数的意思分别为:
pm.max_children:静态方式下开启的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进程数
查看每个php-fpm占用的内存大小
ps -ylC php-fpm --sort:rss
查看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进程消耗内存的明细
pmap $(pgrep php-fpm) | less
————————————————
版权声明:本文为CSDN博主「雏菊小识」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43697366/article/details/117782318