php-fpm usa muita CPU

2

Eu uso o wordpress no Ubuntu 12.04 com Nginx + php-fpm no meu VPS. Existem 2 núcleos de CPU + 4096Mb de memória.

Eu movi o banco de dados mysql para outro servidor e configure o acesso remoto. Existem cerca de 300 visitantes on-line de uma só vez e o php-fpm usa muito CPU:

Eu também uso cache APC e batcache para wordpress.

configuração do php-fpm:

listen = /var/run/fpm-macradar.sock
;listen.backlog = -1

pm = ondemand
pm.max_children = 30
pm.start_servers = 15
pm.min_spare_servers = 10
pm.max_spare_servers = 20
;pm.process_idle_timeout = 10s;
pm.max_requests = 500

pm.status_path = /status

chdir = /

request_slowlog_timeout = 60s
slowlog = /var/log/$pool.log.slow

request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes

;php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 128M

Qualquer ajuda será apreciada

    
por Andrei Nikolaev 06.06.2014 / 12:30

2 respostas

2

Se você tiver apenas duas CPUs e tiver 30 filhos em paralelo, estará carregando o número de processos que sua CPU suporta. Quando há vários filhos tentando trabalhar, cada um tem menos CPU, e o resultado é que tudo fica mais lento, além da sobrecarga da CPU. Isso é muito importante no caso do WordPress, que usa muita CPU para cada solicitação.

É melhor reduzir o número máximo para 2 ou 3 filhos, e o nginx que é responsável por gerenciar a fila de conexões, as consultas não são perdidas.

Quando o FPM é "ondemand", você só precisa definir pm.max_children, neste caso:

pm.max_children = 2 

Espero que você ache útil.

    
por 06.06.2014 / 14:07
2

Esta é uma pergunta antiga, mas foi colidida por alguém que editou o post.

Enquanto a instalação de um plug-in de cache do Wordpress pode ser eficaz, ainda significa que o PHP é executado, o que é relativamente lento. Se alguns dos visitantes do seu site forem anônimos (ou seja, não logados), você poderá fazer cache de páginas (fastcgi_cache) no Nginx que evitará a chamada do PHP, o que reduz drasticamente o uso da CPU e melhora os tempos de resposta. A página pode ser armazenada em cache por apenas 1 segundo para ser valiosa ou, se o site for bastante estático, você pode levar isso para um dia ou mais. A parte complicada é limpar o cache quando você publica as alterações, mas eu tenho uma solução para isso - veja abaixo.

Faça uma leitura do tutorial que escrevi no LEMP . Esta primeira parte fornece arquivos de configuração para download, eles são bem comentados e as partes posteriores do tutorial os explicam. Há também um ótimo artigo de Nginx sobre microcaching .

    
por 16.02.2016 / 21:25