代码之家  ›  专栏  ›  技术社区  ›  Alex

如何管理日志记录性能?

  •  4
  • Alex  · 技术社区  · 17 年前

    我们有一个消息处理系统,低延迟是关键。最近,我发现虽然我们在系统中保持较高的速率,但我们看到了一些“异常值”。(需要更长时间的消息)当我们删除日志记录时,我们的系统没有显示这些异常值。

    我想知道,其他人如何管理日志记录性能,特别是在消息处理活动中?如何管理这些I/O绑定活动?你把它划掉了吗?您是否改为使用数据库?

    任何关于优化日志记录的建议都将不胜感激。

    注意:我知道我们的系统可能还有其他问题导致异常值,但出于这个问题,我只对日志优化感兴趣,谢谢。

    另外:我们的系统必须记录日志。

    2 回复  |  直到 14 年前
        1
  •  10
  •   Roddy    17 年前

    我想这在某种程度上取决于操作系统。

    这将磁盘I/O性能与时间关键型线程分离,并使我们能够很好地控制队列锁定的方式和时间。

        2
  •  1
  •   vgru    17 年前

    与Roddy所说的类似,我们也在线程安全队列中对消息进行排队,并且有一个单独的低优先级线程来执行实际的磁盘I/O。

    在后台线程中,我们对一次可以写入的消息数量(退出队列)也有限制,因此,对于超出此限制的任何内容,我们都会将后台线程重新置于睡眠状态。