线程数:500个   每个线程日志输出次数: 500次

log4j2其实有两个输出异步日志的方式:AsyncLogger和AsyncAppend

他两的区别在于:

AsyncLogger使用的是无锁高性能队列disruptor,底层是依赖数组实现的RingBuffer和CAS改变下标实现,并且不会出现伪共享缓存,关于disruptor的详情可以看下面这篇

https://ifeve.com/disruptor/     此网站貌似有点不稳定:)

AsyncAppend使用的则是ArrayBlockingQueue,底层还是依赖于ReetrantLock保证生产消费的一致性,而因为涉及到挂起和唤醒线程,所以线程上下文切换的开销就不多说了

PS:下面所有测试均基于AsyncLogger

XML文件

全异步和全同步以及混合异步的性能比较

※全异步:

※全同步:

性能直接差了一个数量级,10倍的差距

※混合异步

从对比中我们可以看到全异步的性能是最高的,但是在我们真实生产环境中却不能使用全异步,原因除了在有些时候,我们服务器down掉时可能会丢失部分重要日志信息外,还有可能会出现下面这个博客所描述的问题

https://blog.csdn.net/henrydlwang/article/details/78939031

当然,除了这个问题外,还有一个别人踩过的坑也在这里分享一下

https://juejin.im/post/5b7d5b34518825430810be8e

最后,则是log4j2的一些使用方法和配置信息

关于log4j2的配置的详细解释

https://www.cnblogs.com/yudar/p/5113655.html

log4j2进阶使用
https://blog.csdn.net/u011054333/article/details/54412360

loog4j2如何配置全异步

loog4j2如何配置混合异步

最新文章

  1. 使用node的插件UglifyJs来合并和压缩文件
  2. 随机序列生成算法---生成前N个整数的一组随机序列
  3. 深入剖析PHP输入流 php://input (转载 http://www.nowamagic.net/academy/detail/12220520)
  4. STL之map
  5. js 函数命名
  6. 分布式基础通信协议:paxos,totem和gossip
  7. 【模拟】XMU 1062 山东煎饼
  8. MySql分析算法作品索引(马上,只是说说而已B-tree)
  9. [iOS Animation]-CALayer 图层性能
  10. nginx代理tomcat后,tomcat获取真实(非proxy,非别名)nginx服务端ip端口的解决方案
  11. Eclipse的Servers视图中无法加入Tomcat6/Tomcat7
  12. centos7新增硬盘
  13. Python_tkinter(2)_常用控件
  14. Javascript基础语法(一)
  15. python3 写excel文件 xlsxwriter模块
  16. Elasticsearch -- Head插件安装
  17. 函数和常用模块【day04】:函数介绍(一)
  18. saltstack自动化运维系列12配置管理安装redis-3.2.8
  19. 转 代码修改buildoption
  20. Jenkins系列之Jenkins配置常用工具和如何下载插件

热门文章

  1. Caused by: java.lang.NoClassDefFoundError: com/sun/tools/javac/util/List at
  2. 自己开发的在线视频下载工具,基于Java多线程
  3. Example of how to implement a view-based source list (NSOutlineView) using Cocoa Bindings
  4. 卷积网络中的通道(Channel)和特征图
  5. Js图片缩放代码 鼠标滚轮放大缩小 图片向右旋转
  6. 标准C中字符串分割方法
  7. C# IsNullOrEmpty与IsNullOrWhiteSpace
  8. 用Python写一个小爬虫吧!
  9. (6)zabbix主机与组配置
  10. php登录加密加盐