oldmanpushcart / greys-anatomy

Java诊断工具
Apache License 2.0
4.02k stars 1.22k forks source link

【建议】希望grays能在方法的执行消耗上统计到行 #198

Open AnyinSong opened 7 years ago

AnyinSong commented 7 years ago

有幸知道了grays,让我查找调用链里的耗时点变的相对容易,但美中不足的是对于一个方法内部的耗时统计是基于下一层的调用,这种方式有如下不足:

        +---+[13,9ms]org.apache.cxf.jaxrs.client.AbstractClient:doRunInterceptorChain()
        |   +---[5,1ms]org.apache.cxf.jaxrs.client.AbstractClient:writeBody()
        |   `---[13,1ms]org.apache.cxf.jaxrs.client.AbstractClient:setupInInterceptorChain()
        +---+[13,0ms]org.apache.cxf.jaxrs.client.AbstractClient:preProcessResult()
        |   `---[13,0ms]org.apache.cxf.jaxrs.client.AbstractClient:checkClientException()

doRunInterceptorChain()方法耗时9ms,但此节点下只统计到了两个1ms的耗时,其他7ms反映不出去了哪里

oldmanpushcart commented 7 years ago

嗯,这个猜测你可能遇到了同步块或者锁。所以把时间吃了,当然也可能是gc的原因。这块确实可以优化掉,思路有的,但真心没有时间