调整PHP-FPM(Nginx)的子进程

问题:

日志中出现以下警告消息:

[26-Jul-2012 09:49:59] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 8 idle, and 58 total children

[26-Jul-2012 09:50:00] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it

这意味着没有足够的PHP-FPM进程。
解:

我们需要根据系统内存量来计算和更改这些值:

pm.max_children = (total RAM - RAM used by other process) / (average amount of RAM used by a PHP process)

/etc/php-fpm.d/www.conf

pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
  • 以下命令将帮助我们确定每个(PHP-FPM)子进程使用的内存:

    ps -ylC php-fpm --sort:rss

RSS列显示PHP-FPM进程的未交换的物理内存使用量(千字节)。

平均每个PHP-FPM进程在我的机器上占用大约75MB的RAM。

pm.max_children的适当值可以计算为:

pm.max_children =专用于Web服务器的总RAM /最大子进程大小 - 在我的情况下是85MB

服务器有8GB的RAM,所以:

pm.max_children = 6144MB / 85MB = 72

我留下了一些记忆,让系统呼吸。在计算内存使用情况时,您需要考虑在机器上运行的任何其他服务。

我已经改变了如下设置:

pm.max_children = 70
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 35
pm.max_requests = 500

请注意,非常高的价值并不意味着任何好处。

您可以使用此方便的命令检查单个PHP-FPM进程的平均内存使用情况:

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

您可以使用上述相同的步骤来计算Apche Web服务器的MaxClients的值- 只需用httpd替换php-fpm。

原文:https://myshell.co.uk/blog/20...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值