日志 - 高并发的情况下小小的日志打印会严重影响到性能

简介: 日志 - 高并发的情况下小小的日志打印会严重影响到性能

输出格式优化前

经过测试查看每秒的并发量平均只有110多如下图

image.png

通过查看JVM虚拟机发现很多日志线程出现BLOCKED,如下

"http-saoma%2F192.168.6.162-8097-132" daemon prio=10 tid=0x00002aaab88e4800 nid=0x2c8e runnable [0x0000000045274000]
   java.lang.Thread.State: BLOCKED
    at java.lang.Throwable.getStackTraceElement(Native Method)
    at java.lang.Throwable.getOurStackTrace(Throwable.java:591)
    - locked <0x00000007691390d0> (a java.lang.Throwable)
    at java.lang.Throwable.getStackTrace(Throwable.java:582)
    at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.log4j.spi.LocationInfo.<init>(LocationInfo.java:139)
    at org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:253)
    at org.apache.log4j.helpers.PatternParser$LocationPatternConverter.convert(PatternParser.java:500)
    at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:65)
    at org.apache.log4j.PatternLayout.format(PatternLayout.java:506)
    at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:310)
    at org.apache.log4j.DailyRollingFileAppender.subAppend(DailyRollingFileAppender.java:369)
    at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
    - locked <0x0000000780fb1e00> (a org.apache.log4j.DailyRollingFileAppender)
    at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
    at org.apache.log4j.Category.callAppenders(Category.java:206)
    - locked <0x00000007800020a0> (a org.apache.log4j.spi.RootLogger)
    at org.apache.log4j.Category.forcedLog(Category.java:391)
    at org.apache.log4j.Category.log(Category.java:856)
    at org.slf4j.impl.Log4jLoggerAdapter.error(Log4jLoggerAdapter.java:

我们定位org.apache.log4j.spi.LocationInfo类的代码如下    

String s;
// Protect against multiple access to sw.
synchronized(sw) {
t.printStackTrace(pw);
s = sw.toString();
sw.getBuffer().setLength(0);
}
//System.out.println("s is ["+s+"].");
int ibegin, iend;
// Given the current structure of the package, the line
// containing "org.apache.log4j.Category." should be printed just
// before the caller.
// This method of searching may not be fastest but it's safer
// than counting the stack depth which is not guaranteed to be
// constant across JVM implementations.
ibegin = s.lastIndexOf(fqnOfCallingClass);

从上面可以看出在该方法中用了synchronized锁,然后又通过打印堆栈来获取行号。那么肯定会影响到性能的,我们通过看

此时log4j.properties日志文件配置的输出格式为:

%d %-5p %c:%L [%t] - %m%n

很明显就是%l输出行号的问题,那么我们把%l去掉结果会不会好很多呢?

把log4j.properties文件中输出格式改为:

%d %-5p %c [%t] - %m%n

输出格式优化后

再看每秒的并发量如下图


image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5月前
|
XML JSON Java
最牛逼 Java 日志框架—Log4j2,性能无敌,横扫对手
Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。
|
4月前
|
存储 缓存 Java
浅析JAVA日志中的几则性能实践与原理解释
本篇文章通过几个技术点说明日志记录过程中的性能实践,计算机领域的性能往往都遵循着冰山法则,即你能看得见的、程序员能感知的只是其中的一小部分,还有大量的细节隐藏在冰山之下。
524 1
|
4月前
|
消息中间件 缓存 算法
阿里技术专家,用257页文档分享多线程高并发性能调试经验
多线程和高并发这两大块,现在面试问得越来越多,也是相对一个初级的程序员向中高级迈进的必须要踏过的一个坎儿。
百万级高并发mongodb集群性能数十倍提升优化实践(上篇)
本文是oppo互联网某百亿级数据量/百万级高并发mongodb集群线上真实优化案例,荣获mongodb中文社区2019年度一等奖。
百万级高并发mongodb集群性能数十倍提升优化实践(上篇)
|
网络协议 Java 应用服务中间件
【高并发】高并发环境下如何优化Tomcat性能?看完我懂了!
Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢?
429 1
【高并发】高并发环境下如何优化Tomcat性能?看完我懂了!
|
Java
Logback 日志级别设置和日志打印信息思考
Logback 日志级别设置和日志打印信息思考
341 0
Logback 日志级别设置和日志打印信息思考
|
网络协议 算法 Java
高并发场景下如何优化服务器的性能?
最近,有小伙伴在群里提问:Linux系统怎么设置tcp_nodelay参数?也有小伙伴说问我。那今天,我们就来根据这个问题来聊聊在高并发场景下如何优化服务器的性能这个话题。
344 0
高并发场景下如何优化服务器的性能?
|
网络协议 Java 应用服务中间件
【高并发】高并发环境下如何优化Tomcat性能?看完我懂了!
Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢?
130 0
|
SQL 关系型数据库 Java
【DB吐槽大会】第8期 - PG 高并发短连接性能差
大家好,这里是DB吐槽大会,第8期 - PG 高并发短连接性能差

热门文章

最新文章