TongWeb的日志输出阻塞

问题描述:

并发情况下查看TongWeb线程大部分阻塞在日志输出上。日志如下:

"http-nio2-8080-exec-397" #850571 daemon prio=5 os_prio=0 tid=0x00000058dc0a0000 nid=0x7614 waiting for monitor entry [0x0000005908e30000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at org.apache.log4j.Category.callAppenders(Category.java:201)
    - waiting to lock <0x00000003c1c33640> (a org.apache.log4j.Logger)
    at org.apache.log4j.Category.forcedLog(Category.java:388)
    at org.apache.log4j.Category.log(Category.java:853)
    at org.apache.commons.logging.impl.Log4JLogger.debug(Log4JLogger.java:171)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:863)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 

原因:

应用log4j日志配置为DEBUG级别日志输出,这样在大并发的情况下,会导致多线程大量的日志输出到日志文件中造成日志输出阻塞,造成系统性能问题。

解决办法:

1. 在性能测试或生产系统上运行时,应用log4j日志级别不能设为DEBUG级别, 理应为INFO级别日志。

2. 若应用设为INFO级别后仍然日志阻塞,TongWeb7.0.4.1及之后版本增加了异步日志输出功能, 增加启动参数 -DlogThreads=1可开启异步日志输出。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值