0

考虑下面的代码:

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 文档中也描述了这个确切的问题:端到端延迟性能

控制权的返回在测量响应时间方面停止了事务的时钟,但同时事务的逻辑处理继续进行。

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

谁能提供更多关于如何配置 AppD 来跟踪异步调用的可执行指南,如上图所示?

4

1 回答 1

0

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

这将指向您传递给 Executor 的 Runnable 的最后一个方法。然后根据文档,您只需将 Demarcator 附加到您的业务事务,它将收集异步调用。

于 2018-10-04T07:52:28.787 回答