当前位置: 首页 > 后端技术 > PHP

PHP-FPM(Nginx)子进程调优

时间:2023-03-30 00:56:47 PHP

问题:日志中出现如下警告信息:[26-Jul-201209:49:59]WARNING:[poolwww]seemsbusy(youmayneedtoincreasepm.start_servers,或pm.min/max_spare_servers),产生32个孩子,有8个空闲,总共58个孩子[2012年7月26日09:50:00]警告:[poolwww]服务器达到pm.max_children设置(50),考虑提高它,这意味着没有足够的PHP-FPM进程。解决方案:我们需要根据系统内存的大小来计算并更改这些值:pm.max_children=(totalRAM-otherprocessusedRAM)/(averageamountofRAMusedbyaPHPprocess)/etc/php-fpm.d/www.confpm.max_children=50pm.start_servers=5pm.min_spare_servers=5pm.max_spare_servers=35以下命令将帮助我们确定每个(PHP-FPM)子进程使用的内存:ps-ylCphp-fpm--sort:rssRSScolumns显示PHP-FPM进程未交换的物理内存使用量(以千字节为单位)。平均而言,每个PHP-FPM进程在我的机器上占用大约75MB的RAM。pm.max_children的适当值可以计算为:pm.max_children=专用于Web服务器的总RAM/最大子进程大小-在我的例子中是85MB服务器有8GBRAM,所以:pm.max_children=6144MB/85MB=72我留下一些记忆,让系统呼吸。在计算内存使用量时,您需要考虑机器上运行的任何其他服务。我改变了这样的设置:pm.max_children=70pm.start_servers=20pm.min_spare_servers=20pm.max_spare_servers=35pm.max_requests=500注意,非常高的值并不意味着什么好。您可以使用这个方便的命令检查单个PHP-FPM进程的平均内存使用情况:ps--no-headers-o"rss,cmd"-Cphp-fpm|awk'{sum+=$1}END{printf("%d%s\n",sum/NR/1024,"M")}'您可以使用上述相同的步骤计算ApacheWeb服务器的MaxClients值-只需将php-fpm替换为httpd。原文:https://myshell.co.uk/blog/20...