PHP5-FPM pm.max_children afeta RAM ou CPU + RAM?

2

Recentemente herdei um servidor Nginx + PHP5-FPM e estou aprendendo e tentando otimizar as configurações do PHP5-FPM.

Informação do servidor:

4 CPUs (8 threads)
7.5 GiB RAM

Informação do PHP5-FPM:

pm.max_children = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 3
;pm.process_idle_time = 10s;
;pm.max_requests = 500

(Eu vou descomentar a linha max_requests, já que isso parece ser uma coisa recomendada para fazer.)

Quando o site está sob carga, cada processo do PHP5-FPM tem um uso muito alto da CPU, mas eu ainda não vi um processo com mais de 1% de uso de RAM.

Em todos os lugares que eu olho (por exemplo, aqui e aqui ) fala apenas sobre aumentos de pm.max_children limitado pela RAM e não menciona o uso da CPU.

No meu caso, aumentar pm.max_children aumentaria ou diminuiria o desempenho do meu site, com base no fato de ser mais vinculado à CPU do que o limite de RAM? Em outras palavras, como pm.max_children aumenta, a RAM é a única consideração ou a CPU também é afetada?

[Editar] Não é uma duplicata: A questão basicamente se resume à sentença final, que não é pedindo conselhos sobre planejamento de capacidade; está perguntando se o uso da CPU é uma consideração na configuração pm.max_children ou se é somente a RAM aumentada.

    
por Anthony F. 06.07.2015 / 21:56

2 respostas

0

Depende do que seus scripts PHP estão fazendo. Mas 5 é realmente um número baixo para processos PHP. Normalmente o processo PHP abrirá conexão com o MySQL (leva tempo), espere o MySQL processar a consulta (leva tempo), então ele não estará usando CPU o tempo todo e com apenas 5 processos a CPU pode ficar ociosa em alguns momentos, mas não haverá outro processo PHP para usá-lo. Assim, você pode aumentar com segurança o limite para pelo menos 20 a 30 (ou mais, dependendo de como você recebe as solicitações).

Com relação à pergunta sobre o uso da CPU. Ter processos PHP mais ativos ao mesmo tempo não aumentará o uso da CPU. Toda a potência da CPU que você tem disponível será dividida entre os processos em execução.

    
por 08.07.2015 / 16:50
0

Do meu ponto de vista, o limite de seus filhos é muito baixo. Se você tiver memória suficiente (e cada criança geralmente consome apenas uma pequena quantidade), o número de filhos deve ser definido pelo menos para os núcleos * 2. Eu recomendaria configurar max-children para 32.

    
por 08.07.2015 / 09:55