异步打印日志的一点事

作者:admin 来源:未知 点击数: 发布时间:2019年06月10日

  比来方才竣事转岗以来的第一次双11压测,收成颇多,难言言表, 本文就先谈谈异步日记吧,在高并发高流量响应延迟要求比力小的系统中同步打日记曾经满足不了需求了,同步打日记会堵塞挪用打日记的线程,而打日记本身是需要写磁盘的,所以会形成rt添加。异步日记就是为领会决这个问题。

  如上图,多个营业线程打印日记时候要等把内容写入磁盘后才会前往,所以打日记的rt就是写入磁盘的耗时。

  如上图多个营业线程打印日记时候是把打印使命放入内存队列后就间接前往了,而具体打印日记是有日记系统的一个日记线程去队列里面获取然后施行,可见这种打印rt就是写入内存队列的耗时。

  当队列的残剩容量小于这个阈值而且当前日记level TRACE, DEBUG or INFO ,则丢弃这些日记。

  在压测时候代码设置装备摆设如上,也就是设置装备摆设了异步日记,可是仍是呈现了线程堵塞在打日记的处所了,经查看是堵塞到了日记队列ArrayBlockingQueue的put方式:

  可知put方式在队列满时候会挂起当火线程。那么若何解那?

  通过看代码发觉最终写日记时候有个判断:

  可知若是队列满则间接前往,而不是被挂起当火线程。

  所以设置装备摆设异步appender时候如下:

  在高并发低延迟要求的系统里面不主要的日记能够设置为异步而且要留意设置队列满则丢弃策略,防止营业线程被挂起从而影响rt。

  点击这里打消答复。

  (*) 暗示必填项

  还没有评论。

  ImportNew 由两个 Java 环节字 import 和 new 构成,意指:Java 开辟者进修新学问的网站。 import 可认为是进修和接收, new 则可认为是新学问、新手艺圈子和新伴侣……

  告白与商务合作

  小组 好的话题、有开导的答复、值得相信的圈子

  头条 写了文章?看干货?去头条!

  相亲 为IT独身男女办事的征婚传布平台

  资本 优良的东西资本导航

  博客 国表里的精选博客文章

  设想 UI,网页,交互和用户体验

(编辑:admin)
http://rezekibaru.com/sg/211/