php-fpm 优化

php PHP · systemofdown · 于 1年前 发布 · 998 次阅读

pm=static 静态模式

pm系统默认 pm = dynamic 意思是进程数是动态的,会根据访问量来的需求来自动增减,看似很科学,而在高负载环境下,增减进程也是会有消耗的,所以推荐设置为pm=static 进程数固定

pm.max_children=XXX

当用静态模式下 进程数确定根据 pm.max_children来进进行确定, php-fpm的进程数会受到当前服务器的内存大小的限制. 一般情况下一个php-fpm进程占20M, 可以按一个简单粗暴的算法推算一下:

最大进程数=本机内存/2/20M

比如: 本机内存8G(8192M)除以2 是4096 , 为了保证系统正常运行先砍一半, 再除以20M 是 204.8, 那最大进程四舍五入是 200

⚠️注意: 如果服务器上没有其他耗内存的应用如mysql, 则可以多给php-fpm多分配点内存

pm.max_requests

这个参数的含义是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 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册