zoukankan      html  css  js  c++  java
  • log4j的性能瓶颈定位与性能优化(org.apache.log4j.spi.RootLogger) (转)

    最近执行一个项目调优,发现使用第三方的Json库导致性能差。原以为问题就这么定位到了,结果去掉Json操作后,性能也不见好转。

        现象非常诡异:CPU、内存、网络、磁盘使用率均有剩余,而且压力也是足够的。即使施加更大压力,吞吐量也不见好转。

        于是监控了一下Java进程状态,发现几乎所有进程都处在

    状态:BLOCKED 在 org.apache.log4j.spi.RootLogger@6b2b48e5 上,拥有者: http-0.0.0.0-8080-2010

    阻塞总数:188,661 等待总数: 2,699

    堆栈追踪: 
    org.apache.log4j.Category.callAppenders(Unknown Source)
    org.apache.log4j.Category.forcedLog(Unknown Source)
    org.apache.log4j.Category.log(Unknown Source)
    org.apache.commons.logging.impl.Log4JLogger.debug(Log4JLogger.java:110)

    ……

        写日志这么影响性能?初步怀疑代码或配置问题。请教了一下使用log4j的类似项目的朋友,确定是配置问题:未给log4j配置写缓冲。

        修改log4j配置文件 /usr/local/jboss/server/default/deploy/higkoo.war/WEB-INF/log4j.xml ,红色部分为添加缓冲的配置项:

    <appender name="MyLog" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="/data/logs/higkoo/MyLog.log" />
    <param name="encoding" value="UTF-8" />
    <param name="DatePattern" value="'.'yyyy.MM.dd" />
    <param name="Append" value="true" />
    <param name="BufferSize" value="8192" />
    <param name="ImmediateFlush" value="false" />
    <param name="BufferedIO" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
             <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss,SSS} %m [%c]%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
             <param name="levelMin" value="debug" />
             <param name="levelMax" value="debug" />
             <param name="AcceptOnMatch" value="true" />
    </filter>
    </appender>

    OK,添加缓冲后,阻塞现象立马消失。性能达到最佳,CPU全部耗尽。



    http://blog.csdn.net/wlsyn/article/details/7768725
    http://xq0804200134.iteye.com/blog/1666086




  • 相关阅读:
    Linux中文显示乱码?如何设置centos显示中文
    查看mysql主从配置的状态及修正 slave不启动问题
    【Linux】Linux中的0644 和 0755的权限
    阿里云虚拟主机安装wordpress,提示连接数据库失败的解决方法
    neXtep 安装过程整理
    manjaro 设置开机启动脚本
    manjaro本地安装软件后添加快速启动到开始菜单
    k8s svc 添加 debug 端口
    为什么不建议在 MySQL 中使用 UTF-8?
    redis哨兵主从切换过程解析
  • 原文地址:https://www.cnblogs.com/softidea/p/4242562.html
Copyright © 2011-2022 走看看