我在一些服务器上运行一个 Web 应用程序,这些服务器的 Apache 日志文件位于 OCFS2 SAN 卷上。内部 Web 应用程序日志记录使用 log4perl 在管道模式下完成,管道另一端的 cronolog 处理日志文件轮换。有时,大约在午夜时分,当日志文件轮换时,一些服务器会遇到管道损坏的情况,这会导致 Apache 无法记录,并生成各种警报和不良事件。
我想知道是否有办法确定管道破裂的根本原因。DTrace 听起来可以通过一些巧妙的编程来实现这一点,但我不确定。
有人有主意吗?
谢谢,
肯德尔
答案1
我猜想如果 chronolog 正在记录损坏的管道,那么可能您有 logrotate 或其他旋转器与其竞争。 logrotate
通过关闭并重新打开日志文件来旋转 apache 的日志(这使得它在 logrotate 移动旧文件后创建新文件),这可能会损坏管道。您可以尝试apache2ctl graceful
(这是 logrotate 在 debian 中使用的,您的发行版可能会有所不同)看看这是否是触发条件的原因。