用于池 error_log 轮换的 PHP-FPM 信号

Vil*_*ila 4 logrotate 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
}
Run Code Online (Sandbox Code Playgroud)

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

cyb*_*x86 6

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

  • SIGUSR1 - 将循环日志文件
  • SIGUSR2 - 优雅地重新加载所有工人 + 重新加载 fpm conf/binary

对于日志文件轮换,SIGUSR1 非常适合。具体参考您的方案,此页面上详细介绍了示例 logrotate 配置。信号传递如下:

kill -USR1 `cat /path/to/php-fpm.pid`
Run Code Online (Sandbox Code Playgroud)

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