有人可以帮助我阅读NewRelic摘要和跟踪详细信息。以下屏幕截图包含单个事务的跟踪,这些事务不会对数据库创建任何查询。它只是一个简单的查询,只有几行Scala模板代码,它呈现HTML页面并将其返回给客户端。这只是当前在生产中运行的单个事务。生产有很多更复杂的事务运行,它会对Mongo,Maria,Queue等进行大量外部调用。
跟踪是否揭示了瓶颈可能出现的位置?例如,我们是用尽线程还是工作人员。正如我所说的那样,大多数事务都会进行大量的Web外部调用,这可能会在相当长的时间内保留单个Thread。如果线程或工作人员在Play应用程序中用完了,人们如何实际学习?我们正在使用2.1.4。
以下来电实际发生了什么?
Promise.apply 21.406ms
Async Wait 21.406ms
Actor.tell 48.366ms
PlayDefaultUpstreamHandler 6.292ms
编辑:
以下来电的目的是什么?那些人的平均通话时间非常长。
scala.concurrent.impl.CallbackRunnable.run()
scala.concurrent.impl.Future$PromiseCompletingRunnable.run()
org.jboss.netty.handler.codec.http.HttpRequestDecoder.unfoldAndFireMessageReceived()
编辑:
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
}
}
}
}
}
答案 0 :(得分:0)
我不确定1年后这对你有帮助,但我认为你遇到的性能问题与Play,Akka或Netty无关。
问题出在您的代码业务逻辑或数据库访问中。您在PromiseCompletingRunnable和unfoldAndFireMessageReceived中看到的重要时刻都具有误导性。这个时期由newrelic以错误和误导的方式报告。请阅读这篇文章:
Extremely slow play framework 2.3 request handling code
我遇到了类似的问题,而且我的数据库中存在类似问题,但是newrelic在netty中报告了很多次。
我希望这对你有帮助。