Central de Ajuda

Por que minha página web atinge os Max Children do PHP?

O que é max_children e o que ele faz?

A variável max_children do PHP é uma configuração que controla a quantidade máxima de requisições PHP que podem ser executadas ao mesmo tempo em um site. Esse limite ajuda a proteger o servidor contra scripts lentos ou com erros que poderiam consumir toda a memória disponível.

O que acontece quando o limite de max_children é atingido?

  1. Se os scripts do site não conseguem responder às requisições existentes antes que novas requisições cheguem, o PHP-FPM gerará processos PHP adicionais para atendê-las em paralelo.
  2. O PHP-FPM continuará gerando mais processos PHP adicionais à medida que as requisições se acumularem no site.
  3. No entanto, uma vez que o número de processos atinge o limite estabelecido por max_children, o PHP-FPM deixará de gerar processos PHP adicionais.
  4. Nesse momento, as requisições adicionais serão colocadas em uma fila de espera e só serão atendidas quando uma requisição existente for concluída.

É importante ter em mente que a variável max_children não limita o número de visitantes simultâneos que seu site pode ter, mas sim o número máximo de requisições PHP que são executadas ao mesmo tempo.

Como os visitantes de um site geralmente fazem requisições a cada poucos segundos e o tempo de execução do PHP é apenas uma pequena parte do tempo total necessário para completar uma requisição, o número de visitantes que seu site pode atender é muito maior que o limite definido por max_children.

Exemplo de funcionamento:

Cada visitante do seu site clica em um link ou envia um formulário a cada 10 segundos. Cada script PHP solicitado leva 10 milissegundos para ser executado.

Segundo esse exemplo, as primeiras 10 requisições serão executadas imediatamente, e as próximas 5 que chegarem ficarão em espera até que as requisições anteriores sejam concluídas. Cada requisição resolvida dará lugar a uma requisição em espera, e assim por diante até terminar com todas.

O número de visitantes do seu site será, certamente, maior que o limite de max_children, mas, devido aos intervalos de tempo entre as ações dos visitantes e ao tempo de execução relativamente curto dos scripts PHP, o site ainda poderá responder a todas as requisições de maneira eficiente.

Portanto, com um max_children de 10, seu site poderá suportar até 10,000 visitantes ao mesmo tempo.

Você conseguirá perceber o quão importante é a execução rápida dos scripts PHP.
Se cada requisição PHP demorasse 2 segundos para ser executada, em vez de 10 milissegundos, o site poderia suportar apenas 100 visitantes ao mesmo tempo.

Atingir o limite de max_children indica que alguma parte do site está executando um processo PHP muito lento.

Guia g.0208 · Versão de origem 1 · pt-BR