alibaba / jvm-sandbox

Real - time non-invasive AOP framework container based on JVM
GNU Lesser General Public License v3.0
6.77k stars 1.56k forks source link

类增强时对接口响应时长的影响 #434

Closed ThreefLi closed 5 months ago

ThreefLi commented 1 year ago

服务启动完成后,再进行动态attach,会出现cpu飙升的情况,同时接口响应时长明显变大 请问这是单纯由于cpu飙升造成的时延,还是说当执行方法对应的类正在增强中,需要等待增强完成后才能继续执行

crytis commented 1 year ago

正常现象,attach会加载、编译、增强很多类,耗cpu是肯定的

ShiningXu commented 1 year ago

需要等待增强完成后才能继续执行,增强的过程相当于经历一次FullGC。。

z529192557 commented 1 year ago

主要的耗时点在:新字节码与热点代码的重新编译、另外非常重要的原因是:运行中的虚拟机,对已编译的类的class字节码的替换,需要jvm所有运行时线程处在stw状态,因此当处理业务的线程抵达stw状态后,会等待其他线程也抵达stw状态