考虑以下代码:
public class Job {
private final ExecutorService executorService;
public void process() {
executorService.submit(() -> {
// do something slow
}
}
}我可以使用AppDynamics "Java“规则来创建一个业务事务,以跟踪对Job.process()方法的所有调用。但是,所测量的响应时间没有反映由java.util.concurrent.ExecutorService启动的异步线程的实际成本。这个问题在AppDynamics文档中也有描述:端到端延迟性能,即:
控制的返回在测量响应时间方面停止事务上的时钟,但同时事务的逻辑处理仍在继续。
同一个AppDynamics文档试图给出解决这个问题的解决方案,但是它提供的说明对我来说并不十分清楚。
有人能给出更多关于如何配置AppD来跟踪异步调用的可执行指南吗?
发布于 2018-10-04 07:52:28
您似乎可以定义您的自定义异步事务演示器,如下所示:
https://docs.appdynamics.com/display/PRO44/Asynchronous+Transaction+Demarcators
它将指向传递给执行器的最后一个Runnable方法。然后,根据文档,您只需将Demarcator附加到您的Business,它将收集异步调用。
https://stackoverflow.com/questions/49509430
复制相似问题