我一直在负责一段时间以来一直受到压力的服务器。 我build议目前正在由团队中的其他成员实施的变革,以缓解该网站的核心基础架构问题。 但是,还有一个急需解决的问题就是要买一些时间。
由于日志轮转CRON运行,Apache每天早上7:30重新启动。 6:00 – 9:00是我们的正常站点使用高峰时间,当与CRON结合使用时,服务器内存不足。
什么日志轮转configuration会有帮助? 我应该把它从每天移动到每小时吗? 更改阈值? 只是改变时代(我这样做,仍然遇到了中断)。
EEAA关于使用远程日志服务器的build议完全解决了这个问题,但在您的环境中可能是不可能的。
使用LogRotate 重新加载 Apache,而不是重新启动它,如本网站所述 。 您可能需要将参数更改为每天。 如果您每小时,每天或每周轮换一次,对于停电时间应该没有什么影响。
/var/log/apache2/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi; \ endscript }
在重新加载configuration之前,重新加载应该让Apache完成服务任何打开的请求。 你可能会失去一些要求,但我不认为你会失去很多。 你可能不会输。
如果您需要更高的可靠性,则应考虑两台具有某种运行状况检查或实时故障切换的负载平衡服务器,或使用远程日志服务器。
可以旋转日志,而无需重新启动或重新加载Apache。 缺点是你可能会丢失一些日志条目。
以下是两种方法:
copytruncate部分应该改为copytruncate 。 更改cron预定的时间,甚至从日志中删除apache,并根据需要手动设置它。 停止apache服务,暂停几秒钟让apache真的完成closures,重命名日志文件,重新启动apache。 由于您只更名日志文件,它保持在同一个目录中,并发生“即时”。 一旦你的服务恢复,然后移动/压缩/无论日志文件到需要的地方。
如果它变得非常糟糕,我的内部BOFH说,将日志指向/ dev / null,不要担心旋转它们…