BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Netflix Log4J 优化大规模日志记录

| 作者 Harry Brumleve 关注 1 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2012年12月11日. 估计阅读时间: 2 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

经过Netflix内部优化的log4j版本——Blitz4j已经发布到Github。与其他更传统的日志技术相比,Blitz4j能够在大规模并发和流量拥挤的环境下高效生成日志,而且消耗的资源更少。这是通过重写log4j中可能发生同步和死锁的代码部分实现的。

Netflix对log4J的修改包括:

  1. 移除所有关键的同步,使用并发数据结构。
  2. 为内存缓冲区和工作线程提供强大的配置能力。
  3. 使用执行者池模型替换等待-通知模型,进一步隔离应用程序线程和日志线程。
  4. 通过可配置的摘要信息在日志高峰期更好地处理日志消息。

Netflix宣称,使用Blitz4j时每秒钟记录300到500行日志的开销至少降低了75%,同步相关的处理器使用峰值也完全消失了。现在,即使在高使用量和高日志量的情况下,应用程序也能在一个可接受的时间内做出响应。

随着交易量和每个实例日志需求的增加,Netflix注意到log4j消耗的资源越来越多,延缓了它所记录的进程的速度。因为对log4j的大量投入,他们难以下定决心转移到像LogBack这样不同的日志技术;相反,他们选择了重写log4j,为无阻塞和异步的日志进行了定制。Log4j框架并没有太大的变动;只有影响伸缩性的地方做了修改。

Netflix的Karthikeyan Ranganathan认为,对于刚起步的项目而言Blitz4j可能并不是最好的选择。LogBack是log4j团队开发的一个产品,它解决了Netfliex团队所关心的很多问题。在这方面,没有使用传统log4j框架或者基于slf4j构建的项目应该考虑使用LogBack而不是Blitz4j。但是对于在log4j上有大量投入的公司而言,Blitz4j是能够记录因特网规模日志的正确选择。

英文原文地址Netflix Log4J Optimizations Yield Logging at Massive Scale


感谢臧秀涛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT