Performance NewRelic中以Play Framework作为后端的事务处理速度较慢

Performance NewRelic中以Play Framework作为后端的事务处理速度较慢,performance,scala,playframework,netty,newrelic,Performance,Scala,Playframework,Netty,Newrelic,有人能帮我读一下NewRelic的摘要和跟踪细节吗。下面的屏幕截图具有单个事务的跟踪,不会创建对数据库的任何查询。这只是一个简单的查询,只有几行Scala模板代码,它呈现HTML页面并将其返回给客户端。这只是当前正在生产中运行的单个事务。生产有大量更复杂的事务在运行,这些事务对Mongo、Maria、Queue等进行大量的外部调用 追踪是否揭示了瓶颈可能在哪里?例如,我们是否正在耗尽线程或工作线程。正如我所说的,大多数事务都会执行大量web外部调用,这可能会在相当长的时间内保留单个线程。如何才能

有人能帮我读一下NewRelic的摘要和跟踪细节吗。下面的屏幕截图具有单个事务的跟踪,不会创建对数据库的任何查询。这只是一个简单的查询,只有几行Scala模板代码,它呈现HTML页面并将其返回给客户端。这只是当前正在生产中运行的单个事务。生产有大量更复杂的事务在运行,这些事务对Mongo、Maria、Queue等进行大量的外部调用

追踪是否揭示了瓶颈可能在哪里?例如,我们是否正在耗尽线程或工作线程。正如我所说的,大多数事务都会执行大量web外部调用,这可能会在相当长的时间内保留单个线程。如何才能真正研究线程或工作线程是否在Play应用程序中耗尽?我们使用的是2.1.4

在下面的调用中实际发生了什么

承诺。应用21.406ms

异步等待21.406ms

演员:48.366ms

PlayDefaultUpstreamHandler 6.292ms

编辑:

以下通话的目的是什么?这些电话的平均通话时间超高

scala.concurrent.impl.CallbackRunnable.run()
scala.concurrent.impl.Future$PromiseCompletingRunnable.run()
org.jboss.netty.handler.codec.http.HttpRequestDecoder.unfoldAndFireMessageReceived()

编辑:


我不确定这是否会在一年后对你有所帮助,但我认为你遇到的表现问题与比赛、阿克卡或内蒂无关

问题将出现在您的代码业务逻辑或数据库访问中。你看到的PromiseCompletingRunnable和UnlopsandFireMessageReceived的重要时刻是误导性的。newrelic以错误和误导的方式报道了这一次。请阅读此帖:

我也遇到了类似的问题,我的问题也在数据库中,但newrelic在netty中报道了很多次


我希望这对您有所帮助。

请使用akka/线程池配置更新线程,好吗?我也有类似的行为。有时高吞吐量的情况下,我会得到良好的未来$PromiseCompletingRunnable.run()次,有时低吞吐量的情况下,我会得到非常缓慢的未来$PromiseCompletingRunnable.run()次。你解决问题了吗?
play {
  akka {
    event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
    loglevel = WARNING
    actor {
      default-dispatcher = {
        fork-join-executor {
          parallelism-min = 350
          parallelism-max = 350
        }
      }
      exports = {
        fork-join-executor {
          parallelism-min = 10
          parallelism-max = 10
        }
      }
    }
  }
}