ano*_*one 0 logrotate apache-2.2
让我们从一个小转储开始:
/var/log/httpd/*log {
compress
missingok
notifempty
sharedscripts
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
Run Code Online (Sandbox Code Playgroud)
这是我们的 httpd logrotate.d 文件的转储。
如您所见,在文件轮换后,apache 被“重新加载”。
禁用这个可以吗?
我们反向代理(通过 nginx)到我们的 apache 盒子,并注意到当它被执行(httpd 重新加载)有 2-5 秒的停机时间(通过我们的 nginx 反向代理日志注意到)。
我们想禁用它。
任何想法如何在轮换后不发送重新加载的情况下轮换 apache 日志?
谢谢!
重新加载的原因是 Apache 打开日志文件并在启动或重新加载时获取它的句柄。即使文件被移动,它也会继续写入该文件句柄,因此如果您通过移动文件来旋转文件,则需要重新加载,以便它意识到文件丢失并使用新文件创建一个新文件文件句柄。
正如 Christopher Perrin 所说,使用管道日志是一种解决方案。另一种是使用选项
copytruncate
Run Code Online (Sandbox Code Playgroud)
在您的 logrotate 配置文件中。日志文件不会被移动,而是被复制到新位置,旧文件将被截断。这意味着 Apache 可以保持相同的文件句柄,并且不需要重新启动。
| 归档时间: |
|
| 查看次数: |
6278 次 |
| 最近记录: |