alibaba / nacos

an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
https://nacos.io
Apache License 2.0
29.87k stars 12.76k forks source link

logback-nacos.xml packagingData=true cause performance issue #12323

Closed dingjs closed 1 month ago

dingjs commented 1 month ago

Describe the bug logback-nacos.xml packagingData=true 会影响应用本身的logback配置。 packagingData=true有较严重的性能问题,开启的话,会调用loadClass ; 如异常较多,会引发严重的锁竞争,导致系统hung住。 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) at ch.qos.logback.classic.spi.PackagingDataCalculator.loadClass(PackagingDataCalculator.java:204) at ch.qos.logback.classic.spi.PackagingDataCalculator.bestEffortLoadClass(PackagingDataCalculator.java:228) at ch.qos.logback.classic.spi.PackagingDataCalculator.computeBySTEP(PackagingDataCalculator.java:135) at ch.qos.logback.classic.spi.PackagingDataCalculator.populateUncommonFrames(PackagingDataCalculator.java:111) at ch.qos.logback.classic.spi.PackagingDataCalculator.populateFrames(PackagingDataCalculator.java:104) at ch.qos.logback.classic.spi.PackagingDataCalculator.calculate(PackagingDataCalculator.java:58) at ch.qos.logback.classic.spi.ThrowableProxy.calculatePackagingData(ThrowableProxy.java:142) at ch.qos.logback.classic.spi.LoggingEvent.(LoggingEvent.java:122) at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:419)

建议

  1. 配置为false
  2. 引用应用本身自带的logback packagingData配置
KomachiSion commented 1 month ago

这个是需要在logback的root中设置,还是在appender或logger上设置?

如果是需要在logback的root中设置, 那不应该有nacos来修复, 因为nacos的logback配置只有appender和logger, nacos只会把appender和logger给添加到用户的logback context中,不会独立创建,需要用户在他的logback配置中的打开。

如果是appender或logger上设置, 那么辛苦提交一个pr,进行一下设置。

dingjs commented 1 month ago

这个是需要在logback的root中设置,还是在appender或logger上设置?

如果是需要在logback的root中设置, 那不应该有nacos来修复, 因为nacos的logback配置只有appender和logger, nacos只会把appender和logger给添加到用户的logback context中,不会独立创建,需要用户在他的logback配置中的打开。

如果是appender或logger上设置, 那么辛苦提交一个pr,进行一下设置。

你好,感谢回复,这个需要在 logger-adapter-impl/logback-adapter-12/src/main/resources/nacos-logback12.xml 中修改 <configuration debug="false" scan="false" **packagingData="true"**> , 去掉 **packagingData="true"** 。 目前 packagingData="true" 的配置会”影响“应用系统自己的配置。 我这边明天晚上提交一下PR。

KomachiSion commented 1 month ago

pr中我看没有修改nacos-logback12.xml,是否nacos-logback12.xml中也需要移除?

dingjs commented 1 month ago

pr中我看没有修改nacos-logback12.xml,是否nacos-logback12.xml中也需要移除?

你好,不需要移除了,代码中强制还原为业务方自己的设置了