写点什么

Netflix Log4J 优化大规模日志记录

  • 2012-12-10
  • 本文字数:785 字

    阅读完需:约 3 分钟

经过 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2012-12-10 07:324521
用户头像

发布了 321 篇内容, 共 132.8 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

SSM整合(接口测试)

十八岁讨厌编程

Java SSM框架 后端开发 9月月更

C++学习---cstdio的源码学习分析04-创建临时文件函数tmpfile

桑榆

c++ 源码阅读 9月月更

【字符串函数内功修炼】strlen + strstr + strtok + strerror(三)

Albert Edison

C语言 9月月更 strlen strstr strtok

PLG SaaS 产品 Figma 商业模式拆解

程序员泥瓦匠

SaaS

4 分钟优化 Fetch 函数写法~

掘金安东尼

前端 9月月更

《简单记个笔记》之部分CSS选择器介绍

吉师职业混子

9月月更

史上最详细vue的入门基础

楠羽

Vue 笔记 9月月更

Python 教程之变量

芯动大师

变量 9月月更 Python语法

【云原生 | 从零开始学Kubernetes】一、kubernetes到底是个啥

泡泡

云计算 云原生 k8s 9月月更

2022-09-20:以下go语言代码输出什么?A:8 8;B:8 16;C:16 16;D:16 8。 package main import ( “unsafe“ “fmt“ )

福大大架构师每日一题

golang 福大大 选择题

通过爬虫爬取一些图片

吉师职业混子

9月月更

概述构建应用智能运维系统的核心能力

阿泽🧸

智能运维 9月月更

ESP32-C3入门教程 基础篇(三、UART模块 — 与Enocean无线模块串口通信)

矜辰所致

ESP32-C3 9月月更 UART

面试突击85:为什么事务@Transactional会失效?

王磊

Java 面试

开发者有话说|情分 or 本分

卷卷龙

个人成长 职场 PUA

监控系统的阶段建设

穿过生命散发芬芳

监控系统 9月月更

开发者有话说|时间过得真快,我也是一个“奔三”的人了

武师叔

个人成长

2022-09-19:给定字符串 S and T,找出 S 中最短的(连续)子串 W ,使得 T 是 W 的 子序列 。 如果 S 中没有窗口可以包含 T 中的所有字符,返回空字符串 ““。 如果有不

福大大架构师每日一题

算法 rust 福大大

面对全新的编程语言,这些思路可以帮助你察觉漏洞

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞利用

《简单记个笔记》之表单标签加CSS选择器

吉师职业混子

9月月更

Python语法之数据类型

芯动大师

Python 数据类型 9月月更

[极致用户体验] 多页面应用里,「网页内返回」按钮,何时用 history.back 何时用 replaceState?

HullQin

CSS JavaScript html 前端 9月月更

在windows电脑上配置kubectl远程操作kubernetes

程序员欣宸

Kubernetes 9月月更

[SSM]SSM整合①(整合配置)

十八岁讨厌编程

Java 后端开发 9月月更

Web3.0杂谈-#001(47/100)

hackstoic

Web3.0

【数据结构】五分钟带你了解及自定义有向图

迷彩

数据结构 算法 无向图 9月月更 有向图

Python教程之Python简介

芯动大师

编程语言 9月月更 Python简介

SSM整合(功能模块的开发)

十八岁讨厌编程

Java ssm 后端开发 9月月更

ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)

矜辰所致

I2C I2C协议 ESP32-C3 9月月更

Netflix Log4J 优化大规模日志记录_Java_Harry Brumleve_InfoQ精选文章