В моей игре! 2.1. Приложение Rest API. Я установил новую реликвию.Игнорирование Async Ожидание воспроизведения! Scala App в New Relic
Весь мой контроллер Действия наследуются от метода, который добавляет тайм-аут в будущее ответа. Если какой-либо из таких методов занимает больше 20 секунд, запрос прекращается, и результатом является ошибка 5XX.
Код в основном это:
val timeout = 20
action(request).orTimeout(
name + " backend timed-out after "+timeout+" seconds", timeout * 1000).map {
resultOrTimeout => { //... process response or timeout with fold
Проблема у меня в том, что при анализе данных в новой реликвии, Im получая, что среднее время отклика 20 секунд всегда.
При просмотре трассы я вижу, что новая реликвия интерпретирует функцию тайм-аута как контейнер ответа.
Slowest components Count Duration %
Async Wait 7 20,000 ms 100%
Action$$anonfun$apply$1.apply() 2 2 ms 0%
PlayDefaultUpstreamHandler$$an....apply() 1 1 ms 0%
PlayDefaultUpstream....$$anonfun$24.apply() 1 1 ms 0%
SmaugController$class.akkify() 1 0 ms 0%
PlayDefaultUpstreamHandler.handleAction$1() 1 0 ms 0%
Total 20,000 ms 100%
Есть ли способ я могу предотвратить новый реликтовых от считая, что тайм-аут?
Спасибо!
EDIT: Я расширил сделку, чтобы получить больше информации:
Duration (ms) Duration (%) Segment Drilldown Timestamp
20,000 100.00% HttpRequestDecoder.unfoldAndFireMessageReceived()
20,000 100.00% Async Wait
Stack trace
scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:23)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1146)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
java.lang.Thread.run (Thread.java:679)
107 0.53% SmaugController$class.akkify()
Как вы можете видеть, реальная работа делается в akkify методом, который занимает 107 мс, все остальное время потребляемую Async Ожидание вызова
В в конце он работал с Play 2.1.1. Важны были методы Promise.timeout и Future.firstCompletedOf. Метод Action.async не был необходим, чтобы новая реликвия своевременно сообщила о времени. – dgrandes