Como impedir que o PHP-FPM consulte muita RAM no Linux
- 4669
- 527
- Ms. Travis Schumm
Se você implantou um Lemp (Linux, Nginx, Mysql/mariadb, e Php) empilhe, então você provavelmente está usando Fastcgi proxying interior Nginx (como um servidor HTTP), para processamento PHP. PHP-FPM (um acrônimo de Gerenciador de processos FastCGI) é uma alternativa amplamente usada e de alto desempenho Php fastcgi implementação.
Aqui estão os guias úteis sobre a configuração Pilha lemp em Linux.
- Como instalar pilha Lemp com phpmyadmin no Ubuntu 20.04
- Como instalar o servidor Lemp no CentOS 8
- Como instalar o Lemp no Debian 10 Server
Recentemente, todo o nosso Php sites em um dos nossos Lemp Os servidores da web ficaram lentos e acabaram de responder ao login no servidor. Descobrimos que o sistema estava com pouca RAM: PHP-FPM havia consumido a maior parte da RAM, conforme indicado na captura de tela a seguir (Ferramenta de monitoramento do sistema de olhares).
$ GANCESOlhos - Ferramenta de monitoramento do sistema
Neste artigo, mostraremos como prevenir PHP-FPM de consumir muito ou toda a memória do seu sistema (BATER) no Linux. No final deste guia, você aprenderá a reduzir PHP-FPM consumo de memória em 50% ou mais.
Reduza o uso da memória php-fpm
Depois de fazer algumas pesquisas na internet, descobrimos que precisávamos reconfigurar o PHP-FPM Gerenciador de processos e certos aspectos 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 /etc/php-fpm.d/www.conf (sobre CENTOS/RHEL/FEDORA) ou /etc/php/7.4/fpm/piscina.d/www.conf (sobre Ubuntu/Debian/Mint).
$ sudo vim /etc /php-fpm.d/www.conf [em centos/rhel/fedora] $ sudo vim/etc/php/7.4/fpm/piscina.d/www.conf [no Ubuntu/Debian/Mint]
Encontre as seguintes diretivas e defina seu valor para se adequar ao seu caso de uso. Para as diretivas que são comentadas, você precisa descomentá -las.
PM = OnDemand PM.max_children = 80 pm.process_idle_timeout = 10s pm.max_requests = 200
Vamos explicar brevemente as diretivas acima e seus valores. O PM A diretiva determina como o gerenciador de processos controlará o número de processos infantis. O método padrão é dinâmico, o que significa que o número de crianças (processos infantis) é definido dinamicamente, dependendo de algumas outras diretrizes, incluindo PM.max_children que define o número máximo de crianças que podem estar vivas ao mesmo tempo.
O gerente de processo mais ideal é o Sob demanda Esquema onde nenhum processo infantil é criado na startup, mas são gerados sob demanda. Os processos infantis são apenas bifurcados quando novas solicitações se conectarão com base no PM.max_children e PM.process_idle_timeout que define o número de segundos após o qual um processo ocioso será morto.
Por último, mas não menos importante, precisamos definir o PM.max_requests parâmetro que define o número de solicitações que cada processo filho deve ser executado antes de re-interna. Observe que este parâmetro também pode ser usado como uma solução alternativa para vazamentos de memória em bibliotecas de terceiros.
Referência: Uma maneira melhor de executar o php-fpm.
Depois de fazer essas configurações acima, notei BATER O uso agora está bem em nosso servidor. Você tem algum pensamento para compartilhar relacionado a este tópico ou perguntas? Chegue -nos através do formulário de feedback abaixo.
- « Como instalar o cache de varnish para o Apache no CentOS/Rhel 8
- DUF - um melhor utilitário de monitoramento de disco Linux »