Log4j2的性能为什么这么好?都是因为disruptor

本文对比了logback和log4j2的压测数据,显示log4j2在多线程环境下性能远超logback,尤其是在使用异步日志时。这主要归功于其内置的优秀消息队列组件Disruptor,通过环形数据结构和CAS操作避免锁竞争,提高吞吐量。文章还介绍了ArrayBlockingQueue的性能瓶颈,并提供了log4j2的配置建议。
摘要由CSDN通过智能技术生成

一、logback和log4j2压测比较

1、logback压测数据

logback压测数据,50个线程,500万条日志写入时间。

logback:messageSize = 5000000,threadSize = 50,costTime = 27383ms
logback:messageSize = 5000000,threadSize = 50,costTime = 26391ms
logback:messageSize = 5000000,threadSize = 50,costTime = 25373ms
logback:messageSize = 5000000,threadSize = 50,costTime = 25636ms
logback:messageSize = 5000000,threadSize = 50,costTime = 25525ms
logback:messageSize = 5000000,threadSize = 50,costTime = 25775ms
logback:messageSize = 5000000,threadSize = 50,costTime = 27056ms
logback:messageSize = 5000000,threadSize = 50,costTime = 25741ms
logback:messageSize = 5000000,threadSize = 50,costTime = 25707ms
logback:messageSize = 5000000,threadSize = 50,costTime = 25619ms

说明:
这个是logback日志的压测数据,在开发机(双核四线程),高配开发机(四核八线程)和服务器(32核)压测的效率都差不多,而且线程开多的时候,性能反而有下降,压测数据如下:

logback:messageSize = 5000000,threadSize = 100,costTime = 33376ms

这个是在32核机器上压测的平均值,高于开发机。

2、log4j2压测数据

log4j2压测数据,因测试数据会占用一些篇幅,这里仅取中位数,但上下差距并不大

log4j2:messageSize = 5000000,threadSize = 100,costTime = 15509ms   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值