Como configurar o PHP-FPM para utilizar pouca memória RAM

Por
Adriano Frare
Especialista em segurança. Certificado CISSP e Certicate Ethical Hacking. Gerente de projetos experiente com um histórico comprovado de trabalho no setor de administração governamental. Hábil em...

Neste artigo iremos ensinar como configurar o PHP-FPM na sua distribuição Linux, de modo a diminuir o consumo de memória RAM. A maioria dos sites que utilizam o LINUX, acabam configurando o LAMP (Linux, NGINX/APACHE, MySQL / MariaDB e PHP), provavelmente está usando o proxy FastCGI no NGINX (como um servidor HTTP) para processamento de PHP. PHP-FPM (um acrônimo de FastCGI Process Manager) é uma implementação alternativa de PHP FastCGI amplamente usada e de alto desempenho. Temos um artigo onde explicamos as diferenças entre PHP e PHP-FPM.

Os administradores acabam se deparando com algumas situações, onde todos os nossos sites PHP em um de nossos servidores LAMP tornaram-se lentos e, eventualmente, pararam de responder ao fazer login no servidor. Após análise, descobrimos que o sistema estava com pouca RAM, pois os processos PHP-FPM havia consumido a maior parte da RAM, conforme indicado na imagem a seguir (relances – ferramenta de monitoramento do sistema).

Neste artigo, mostraremos como evitar que o PHP-FPM consuma muito ou toda a memória do sistema (RAM) no Linux. No final deste artigo, você aprenderá como reduzir o consumo de memória do PHP-FPM em 50% ou mais.

Reduza o uso de memória PHP-FPM

Depois de fazer algumas pesquisas na Internet, descobrimos que precisávamos reconfigurar o gerenciador de processos do PHP-FPM e alguns aspectos dele para reduzir o consumo de memória do PHP-FPM no arquivo de configuração do pool. O pool padrão é www e seu arquivo de configuração está localizado em:

Se estiver usando o CentOS, AlmaLinux, Fedora ou RHEL o caminho do PHP-FPM pode ser este:

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

Se estiver usando Debian, Ubuntu ou qualquer distribuição baseada em .deb, é provável que o caminho do PHP-FPM seja este:

/etc/php/7.4/fpm/pool.d/www.conf

Utilize o editor que mais você se familiariza, no meu caso utilizado o nano, mas você pode utilizar o vi, vim e outros, a sintaxe do comando para CentOS, RHEL e outros RPM é:

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

E para Ubuntu, Debian e outras .deb é:

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Se por ventura você estiver usando uma imagem customizada de algum site ou da sua hospedagem de sites, terá que conferir manualmente qual o caminho correto, isso pode variar conforme o sistema e customizações do PHP-FPM.

Encontre as seguintes diretivas e defina seus valores de acordo com seu caso de uso. Para diretivas com comentários, você precisa removê-los.

pm = ondemand
pm.max_children = 80
pm.process_idle_timeout = 10s
pm.max_requests = 200

Vamos explicar resumidamente as diretivas acima e seus valores. A diretiva pm determina como o gerenciador de processos controlará o número de processos filhos. O método padrão é dynamic, o que significa que o número de filhos (processos filhos) é definido dinamicamente dependendo de algumas outras diretivas, incluindo pm.max_children, que define o número máximo de filhos que podem estar vivos ao mesmo tempo.

O gerenciador de processos mais ideal é o esquema ondemand, em que nenhum processo filho é criado na inicialização, mas sim gerado sob demanda. Os processos filhos são bifurcados apenas quando novas solicitações se conectarão com base em pm.max_children e pm.process_idle_timeout, que define o número de segundos após os quais um processo inativo será eliminado.

Por último, mas não menos importante, precisamos definir o parâmetro pm.max_requests, que define o número de solicitações que cada processo filho deve executar antes de re-spawn. Observe que este parâmetro também pode ser usado como uma solução alternativa para vazamentos de memória em bibliotecas de terceiros.

Depois de fazer as configurações acima, percebi que o uso de RAM agora está bom em nosso servidor.

Recomendamos que cada administrador avalie a melhor configuração do PHP-FPM e memória RAM para uso no seu servidor, e portanto, realize as configurações mais adequadas para atender as necessidades de seus usuários.

Segue abaixo mais alguns artigos interessantes para melhorar a administração do seu Linux.

22 dicas de SSH

Como proteger contra ataque de DDOS

Compartilhe este artigo
Follow:
Especialista em segurança. Certificado CISSP e Certicate Ethical Hacking. Gerente de projetos experiente com um histórico comprovado de trabalho no setor de administração governamental. Hábil em Planejamento Estratégico, ITIL, Project Management Office (PMO), Gerenciamento de Serviços de TI e Project Management Body of Knowledge (PMBOK), Certificado Digital (PKI), Segurança (CEH), CISSP, vendas usando métodos Soluction Selling (IBM).
Sair da versão mobile