Mudanças entre as edições de "Customizando PHP5-FPM"
De MochilaWiki
Ir para navegaçãoIr para pesquisar(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 4: | Linha 4: | ||
</source> | </source> | ||
+ | mostra o consumo total do aplicativo no servidor | ||
+ | <source lang="bash"> | ||
+ | ps -ylC php5-fpm --sort:rss | awk '!/RSS/ { s+=$8 } END { printf "%s\n", "Total memory used by PHP-FPM child processes: "; printf "%dM\n", s/1024 }' | ||
+ | </source> | ||
Pensando que você tenha um VPS com 8GB de ram e os processos bem estressados estejam consumindo 85MB de ram teriamos o calculo de | Pensando que você tenha um VPS com 8GB de ram e os processos bem estressados estejam consumindo 85MB de ram teriamos o calculo de | ||
Linha 9: | Linha 13: | ||
aí teriamos uma configuração assim | aí teriamos uma configuração assim | ||
− | pm.max_children = 70 | + | pm.max_children = 70 |
− | pm.start_servers = 20 | + | pm.start_servers = 20 |
− | pm.min_spare_servers = 20 | + | pm.min_spare_servers = 20 |
− | pm.max_spare_servers = 35 | + | pm.max_spare_servers = 35 |
− | pm.max_requests = 500 | + | pm.max_requests = 500 |
baseado no artigo [http://myshell.co.uk/index.php/adjusting-child-processes-for-php-fpm-nginx/ Adjusting child processes for PHP-FPM (Nginx)] | baseado no artigo [http://myshell.co.uk/index.php/adjusting-child-processes-for-php-fpm-nginx/ Adjusting child processes for PHP-FPM (Nginx)] | ||
+ | |||
+ | outra solução é utilizar ondemand ao invés de dynamic | ||
+ | pm = ondemand | ||
+ | pm.max_children = 75 | ||
+ | pm.process_idle_timeout = 10s | ||
+ | pm.max_requests = 500 | ||
+ | |||
+ | |||
+ | pm = dynamic | ||
+ | pm.max_children = 75 | ||
+ | pm.start_servers = 10 | ||
+ | pm.min_spare_servers = 5 | ||
+ | pm.max_spare_servers = 20 | ||
+ | pm.max_requests = 500 | ||
+ | |||
+ | |||
+ | dica http://linuxbsdos.com/2015/02/17/how-to-reduce-php-fpm-php5-fpm-ram-usage-by-about-50/ | ||
+ | |||
+ | |||
+ | outro exemplo de ondemand | ||
+ | pm = ondemand | ||
+ | pm.process_idle_timeout = 30s | ||
+ | pm.max_children = 10 | ||
+ | pm.max_requests = 0 |
Edição atual tal como às 22h16min de 30 de julho de 2015
com esse comando é possível saber quanto cada processo php5-fpm está consumindo
ps --no-headers -o "rss,cmd" -C php5-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"Mb") }'
mostra o consumo total do aplicativo no servidor
ps -ylC php5-fpm --sort:rss | awk '!/RSS/ { s+=$8 } END { printf "%s\n", "Total memory used by PHP-FPM child processes: "; printf "%dM\n", s/1024 }'
Pensando que você tenha um VPS com 8GB de ram e os processos bem estressados estejam consumindo 85MB de ram teriamos o calculo de
pm.max_children = 6144MB / 85MB = 72
aí teriamos uma configuração assim
pm.max_children = 70 pm.start_servers = 20 pm.min_spare_servers = 20 pm.max_spare_servers = 35 pm.max_requests = 500
baseado no artigo Adjusting child processes for PHP-FPM (Nginx)
outra solução é utilizar ondemand ao invés de dynamic
pm = ondemand pm.max_children = 75 pm.process_idle_timeout = 10s pm.max_requests = 500
pm = dynamic pm.max_children = 75 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20 pm.max_requests = 500
dica http://linuxbsdos.com/2015/02/17/how-to-reduce-php-fpm-php5-fpm-ram-usage-by-about-50/
outro exemplo de ondemand
pm = ondemand pm.process_idle_timeout = 30s pm.max_children = 10 pm.max_requests = 0