pm系统默认 pm = dynamic
意思是进程数是动态的,会根据访问量来的需求来自动增减,看似很科学,而在高负载环境下,增减进程也是会有消耗的,所以推荐设置为pm=static
进程数固定
当用静态模式下 进程数确定根据 pm.max_children来进进行确定, php-fpm的进程数会受到当前服务器的内存大小的限制. 一般情况下一个php-fpm进程占20M, 可以按一个简单粗暴的算法推算一下:
最大进程数
=本机内存
/2
/20M
比如: 本机内存8G(8192M)除以2 是4096 , 为了保证系统正常运行先砍一半, 再除以20M 是 204.8, 那最大进程四舍五入是 200
⚠️注意: 如果服务器上没有其他耗内存的应用如mysql, 则可以多给php-fpm多分配点内存
这个参数的含义是php-fpm工作进程处理完多少请求后自动重启,主要目的就是为了控制请求处理过程中的内存溢出. 这个值设置小了, 请求量大会反复重启,设置大了如果有内存泄漏的程序则导致内存居高不下.
1、查看php-fpm的进程个数
ps -ef |grep "php-fpm"|grep "pool"|wc -l
2、查看每个php-fpm占用的内存大小
ps -ylC php-fpm --sort:rss
3.查看PHP-FPM在你的机器上的平均内存占用
ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
4.查看单个php-fpm进程消耗内存的明细
pmap $(pgrep php-fpm) | less
本文由 systemofdown 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。