我试图对我的Play 2.0.2应用程序进行一些负载测试,但是我不断遇到以下异常:
无法调用该操作,最终收到一个错误:Thrown(akka.pattern.AskTimeoutException: Time out)
我正在使用http://blitz.io/进行负载测试。
我的技术栈是Play + mysql。
我的应用程序中没有使用任何promises。
下面是自定义的akka配置:
#default timeout for promises
promise.akka.actor.typed.timeout=10s
play {
akka {
event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
loglevel = ERROR
actor {
deployment {
/actions {
router = round-robin
nr-of-instances = 100
}
/promises {
router = round-robin
nr-of-instances = 100
}
}
retrieveBodyParserTimeout = 10 second
actions-dispatcher = {
fork-join-executor {
parallelism-factor = 100
parallelism-max = 200
}
}
promises-dispatcher = {
fork-join-executor {
parallelism-factor = 100
parallelism-max = 200
}
}
websockets-dispatcher = {
fork-join-executor {
parallelism-factor = 100
parallelism-max = 200
}
}
default-dispatcher = {
fork-join-executor {
parallelism-factor = 100
parallelism-max = 200
}
}
}
}
}
还有一件事:应用程序运行一天左右后,开始变慢。在检查资源(使用htop)时,我发现cpu利用率达到了100%,因此很明显节点卡住了,做了太多的工作,导致响应延迟极大。此外,我可以看到平均产生了8-10个java实例。为什么会这样?Play应用程序自然会生成这么多的java实例吗?关于内存使用情况,java play实例在生成时获得512MB-1536MB,从统计数据中可以看出,平均内存使用率约为50-70%,因此可能不是问题所在(可能存在内存泄漏等问题)。
我时间非常紧张,因此我会感激任何我能得到的调查(或可能修复)此问题的帮助/指针。
非常感谢!