Отслеживание деталей транзакции с помощью New Relic при передаче в другой потокJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Отслеживание деталей транзакции с помощью New Relic при передаче в другой поток

Сообщение Anonymous »

Мы используем Java-агент New Relic с платформой Play и имеем некоторые проблемы с отслеживанием сегментов/деталей транзакции, когда выполнение передается другому потоку.
Рассмотрим этот код:< /p>

Код: Выделить всё

public class SomeController {
private final com.google.common.util.concurrent.TimeLimiter timeLimiter = SimpleTimeLimiter.create(
Executors.newCachedThreadPool(
new ThreadFactoryBuilder()
.setNameFormat("SomePrefix-%d")
.setDaemon(true)
.build()
)
);

@Trace(async = true)
private Result someMethodInternal(Http.Request request, com.newrelic.api.agent.Token token) {
token.link();
... business logic here ...
}

public Result someMethod(Http.Request request) {
var token = NewRelic.getAgent().getTransaction().getToken();
try {
return timeLimiter.callWithTimeout(
() -> someMethodInternal(token),
1L, TimeUnit.MINUTES
);
} finally {
token.expire();
}
}

}
Транзакция someMethod при просмотре в New Relic выглядит следующим образом (обратите внимание на отсутствие сегментов/деталей).
< img alt="Без разбивки сегментов" src="https://i.sstatic.net/M6Jja4fp.png" />
Если timeLimiter не используется, это показывает различные сегменты того, сколько времени затрачивается на выполнение внутренних вызовов, таких как работа с базой данных и т. д.:
[img]https://i.sstatic.net /wKzV4mY8.png[/img]

Документация NewRelic's Token::link предполагает, что @Trace(async=true) требуется для внутреннего метода, который присутствует в приведенном выше коде.

Код: Выделить всё

TimeLimiter
имеет свой собственный поток, который контролирует выполнение, но мне кажется, что все должно быть в порядке, поскольку мы передаем токен правильно.
Чего еще здесь может не хватать? п>

Подробнее здесь: https://stackoverflow.com/questions/790 ... her-thread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»