arthas
arthas copied to clipboard
trace spring intercept时不能正常工作
首先我trace我想看的入口
找到了耗时的地方,发现是他上层的intercept:org.springframework.cglib.proxy.MethodInterceptor:intercept
但是再往下跟以后, trace org.springframework.cglib.proxy.MethodInterceptor intercept --listenerId 21
就乱了。PS:实际还有比这更乱的
参考下这个,要理解spring poxy是怎么工作的。 https://github.com/alibaba/arthas/issues/1424
参考下这个,要理解spring poxy是怎么工作的。 #1424
被代理对象我是知道的,现在是intercept耗时,但是再继续跟入,没法达到trace的效果
参考下这个,要理解spring poxy是怎么工作的。 #1424
被代理对象我是知道的,现在是intercept耗时,但是再继续跟入,没法达到trace的效果
直接找到原始的函数再 trace,本质上 proxy 还是要调用原始函数的。 直接 trace proxy相关的代码,所有proxy 的结果都会打印,当然乱了。
参考下这个,要理解spring poxy是怎么工作的。 #1424
被代理对象我是知道的,现在是intercept耗时,但是再继续跟入,没法达到trace的效果
直接找到原始的函数再 trace,本质上 proxy 还是要调用原始函数的。 直接 trace proxy相关的代码,所有proxy 的结果都会打印,当然乱了。
我现在发现的问题是原始函数不耗时。上面的intercept耗时
为啥没有打印最耗时出的操作,只打印了占1.93%耗时的子操作
为啥没有打印最耗时出的操作,只打印了占1.93%耗时的子操作 和我的问题差不多。这其实已经能定位intercept耗时了
但是再往下继续就查不了了
我也遇到了这样的问题 怎么进一步排查耗时问题呢?
mark一下,我也遇到该问题了。原始执行方法耗时并不长,才11ms。但是trace打印出来的
---[99.70% 124.742957ms ] org.aspectj.lang.ProceedingJoinPoint:proceed() +---[99.82% 124.393074ms ] org.springframework.cglib.proxy.MethodInterceptor:intercept()
只能追踪到AOP,然后调用到joinPoint.proceed()方法。直接用trace追踪原始方法也只能打印出一部分。不知道剩余的耗时被谁占用了。
看不到剩余的部分耗时,就很捉急,哈哈
我也碰到过类似情况了,最后是在本地用IDEA的profiler看了带总时间的火焰图才发现,我的场景里这个切面是事务切面,事务切面在等待从连接池里面取连接。。。
怎么理解呢? 多线程操作的时候,在等待资源的耗时吗?
mark一下,我也遇到该问题了。原始执行方法耗时并不长,才11ms。但是trace打印出来的
---[99.70% 124.742957ms ] org.aspectj.lang.ProceedingJoinPoint:proceed() +---[99.82% 124.393074ms ] org.springframework.cglib.proxy.MethodInterceptor:intercept()
只能追踪到AOP,然后调用到joinPoint.proceed()方法。直接用trace追踪原始方法也只能打印出一部分。不知道剩余的耗时被谁占用了。
看不到剩余的部分耗时,就很捉急,哈哈
大佬解决了吗