AppDynamics 4.4如何跟踪异步交易

时间:2018-03-27 09:40:23

标签: asynchronous appdynamics

请考虑以下代码:

public class Job {
    private final ExecutorService executorService;

    public void process() {
        executorService.submit(() -> {
            // do something slow
        }
    }
}

我可以使用AppDynamics“Java POJO”规则来创建业务事务来跟踪对Job.process()方法的所有调用。但是,测量的响应时间并未反映java.util.concurrent.ExecutorService启动的异步线程的实际成本。 AppDynamics文档中也描述了这个确切的问题:End-to-End Latency Performance

  

在测量响应时间方面,控制权的返回会停止交易的时钟,但同时交易的逻辑处理仍在继续。

同样的AppDynamics文档尝试提供解决此问题的解决方案,但它提供的说明对我来说不是很清楚。

有人可以提供更多关于如何配置AppD来跟踪上述异步调用的可执行指南吗?

1 个答案:

答案 0 :(得分:0)

您似乎应该能够定义自定义的异步事务分界器,如下所述:
https://docs.appdynamics.com/display/PRO44/Asynchronous+Transaction+Demarcators

,它将指向您传递给执行程序的Runnable的最后一个方法。然后,根据文档,您需要做的就是将Demarcator附加到您的业务事务中,它将收集异步调用。