用于池错误日志轮换的 PHP-FPM 信号

用于池错误日志轮换的 PHP-FPM 信号

我正在将我服务器的所有日志轮换任务移至 logrotate。该服务器有多个 PHP-FPM 池,每个池都配置了单独的error_log指令。

日志的 logrotate 配方相当简单:

/var/log/php/*.log
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        dateext
        sharedscripts
        postrotate
                # Need for signaling the php-fpm process?
        endscript
}

我是否应该向 php-fpm 池发送一些信号来捕获 error_log 文件的新句柄(在postrotate脚本中)?如果是,哪个信号?

答案1

除了正常信号之外,PHP-FPM 还可以识别两个“用户定义”信号:SIGUSR1 和 SIGUSR2。

  • SIGUSR1-将循环日志文件
  • SIGUSR2 - 正常重新加载所有工作进程 + 重新加载 fpm conf/binary

对于日志文件轮换,SIGUSR1 非常合适。具体参考您的场景,请参阅 logrotate 配置示例这一页.信号传递如下:

kill -USR1 `cat /path/to/php-fpm.pid`

PHP-FPM 信号定义在:http://php-fpm.org/wiki/Documentation

答案2

是的,您需要发送此信号,但不要手动执行此操作,最好在以下脚本中添加调用:

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

相关内容