php-fpm 的参数,PHP-FPM的配置,参数详解以及性能优化

上一篇《PHP-FPM的原理及使用》,介绍了关于php-fpm的今生前世以及如何与nginx交互的全过程。这一篇主要是说明php-fpm在服务器上是如何配置,对应的参数说明以及该怎么去优化

一 参数配置以及说明1d047f71dd292d27d9a0e75395b35815.png

这个配置是我们一个团队设置在测试环境里面的,主要参数说明如下:

pm = dynamic;

这个配置有两个参数:1 dynamic; 2 static;

dynamic表示php-fpm进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加,保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理,保证多余的进程数不多于pm.max_spare_servers;

static表示php-fpm进程数是静态的,进程数自始至终都是pm.max_children指定的数量,不再增加或减少。

以上图为例说明,

pm.start_servers = 2; (dynamic方式)起始php-fpm进程数量

pm.min_spare_servers = 1; (dynamic方式)最小php-fpm进程数量

pm.max_spare_servers = 6; (dynamic方式)最大php-fpm进程数量

需要说明的是,

如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。如果dm设置为dynamic,那么pm.max_children参数失效,后面3个参数生效。系统会在php-fpm运行开始的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。

二 参数调优

每个子进程同时只能服务一次连接,如果过少会导致很多不必要的重建和销毁的开销,如果过多又会占用过多的内存,影响其他服务使用。所以控制同时存在多少个进程数就很重要。在实际生产中,一开始,一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M。原因是,PHP程序在执行完成后,或多或少会有内存泄露的问题。无论是dynamic还是static(选择哪种方式,要看服务器CPU的配置),需要设置最大进程数。那么这个进程数要怎么设置呢?看到网上有个公式是: 总内存/30M。那为什么是30M呢?这个我没有找到具体出处。在实际的工作中,我们其实是可以查看当前服务器中fpm进程大小的,然后根据实际的大小来设置进程数目。

三 查看FPM进程命令

1 按 FPM 进程实际占用内存大小排序ps -ylC php-fpm --sort:rss9cf8e01540b2fc405e8ece6ba2d39a37.png

这样的结果是按 KB 大小显示的, 而 ps 命令本身不支持将其转换为按 MB 显示, 所以需要使用 awkps -ylC php-fpm --sort:rss | awk 'NR>1 {$8=int($8/1024)"M";}{ print;}'1eb886f02c2bce6442acfc3312a440a0.png

这个是获取所有FPM进程的大小;我们也可以获取FPM进程的平均大小值

2 所有 FPM 进程占用内存的平均值ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'c6bdb8d3384e504bc1aeb45a68454287.png

得到这些值之后就可以根据服务器内存的大小设置合适的进程数目了。

Post Views: 6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值