让我们从一个小转储开始:
/var/log/httpd/*log {
compress
missingok
notifempty
sharedscripts
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}这是httpd logrotate.d文件的转储。
如您所见,文件旋转后,apache将被“重新加载”。
可以禁用这个吗?
我们将代理(通过nginx)反转到我们的apache盒,并注意到当执行此操作(httpd重新加载)时,有2-5秒的停机时间(注意到,通过nginx反向代理日志)。
我们想要禁用这个。
任何想法,如何旋转apache日志,而不发送重新加载,一旦他们已经被旋转?
谢谢!
发布于 2012-07-05 07:11:27
您可以使用Apache的管状原木。您可以编写管道流来自己归档,并处理脚本中的旋转。那么就不需要重新加载Apache了。
发布于 2012-07-05 10:23:29
重新加载的原因是Apache打开日志文件并在启动或重新加载时获取它的句柄。然后,即使文件被移动,它也会继续写入该文件句柄,因此,如果通过移动文件来旋转文件,则需要重新加载文件,这样它就会意识到文件丢失,并创建一个新的文件句柄。
正如Christopher所说,使用管道日志是一种解决方案。另一种方法是使用以下选项
copytruncate在您的日志旋转配置文件中。而不是移动日志文件,它将被复制到它的新位置,旧文件将被截断。这意味着Apache可以保持相同的文件句柄,并且不需要重新启动。
https://serverfault.com/questions/404916
复制相似问题