logrotate causa tempo de inatividade do php5-fpm

3

Eu notei que um de nossos servidores começa a retornar erros logo após a execução do logrotate, ou seja, no log de erros do nginx eu posso ver:

[error] 8501#0: *118126869 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: xxx.yyy.zz.ww, server: www.test.com, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9011", host: "www.test.com"

Eu tentei adicionar uma ação postrotate que faria o php recarregar normalmente, mas o erro ainda está acontecendo, nosso logrotate atual é o seguinte:

/var/log/php5-fpm.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 644 root root
        postrotate
                [ ! -f /var/run/php5-fpm.pid ] || kill -USR2 'cat /var/run/php5-fpm.pid'
        endscript
}

A configuração do PHP é a seguinte:

[www-9011]

user = www-data
group = www-data
listen = 127.0.0.1:9011
listen.backlog = 65535
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s;
pm.max_requests = 500
rlimit_files = 16384
chdir = /
catch_workers_output = no
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on

Estamos rodando no Ubuntu 12.04 e no php 5.3.10

    
por Kasia Gogolek 02.11.2015 / 12:17

2 respostas

2

Envie USR1 em vez

link

O código fonte mostra que isso é especificamente para arquivos rotativos, eu sei que o Ubuntu 14.04 não suportou muito bem o fpm reloads (USR2), eu suponho que seja o mesmo para versões mais antigas também.

Então mude para

postrotate
                [ ! -f /var/run/php5-fpm.pid ] || kill -USR1 'cat /var/run/php5-fpm.pid'
endscript

para simplesmente girar os logs

    
por 20.01.2018 / 23:36
1

Esta é uma questão antiga, mas ainda sem resposta. Portanto, tento dar uma resposta àqueles que ainda estão procurando: O arquivo de configuração logrotate informa que depois de fazer a rotação, logrotate deve eliminar o processo php-fpm :

        postrotate
                [ ! -f /var/run/php5-fpm.pid ] || kill -USR2 'cat /var/run/php5-fpm.pid'

A configuração padrão atual nos repositórios do Ubuntu 16 é chamar um recurso php5-fpm-reopenlogs que é destinado à rotação do arquivo de log:

        postrotate
                /usr/lib/php5/php5-fpm-reopenlogs

Semelhante ao PHP 7:

        postrotate
                /usr/lib/php/php7.0-fpm-reopenlogs

Este é um /etc/logrotate.d/php5-fpm completo para mostrar este postrotate no contexto:

/var/log/php5-fpm.log {
        rotate 12
        weekly
        missingok
        notifempty
        compress
        delaycompress
        postrotate
                # invoke-rc.d php5-fpm reload > /dev/null
                /usr/lib/php5/php5-fpm-reopenlogs
        endscript
}
    
por 20.01.2018 / 21:06