我正在尝试对我的 Play 2.0.2 应用程序进行一些负载测试,但我一直遇到以下异常:
无法调用动作,最终报错:Thrown(akka.pattern.AskTimeoutException: Timed out)
我正在使用http://blitz.io/进行负载测试。
我的技术栈是 Play + mysql。
我没有在我的应用程序中使用任何承诺。
这是自定义的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%,因此很明显节点卡在做太多工作,它的响应被极大地延迟。此外,我可以看到平均产生了很多 java 实例(8-10 个)。这是为什么?Play 应用程序生成这么多 Java 实例是自然的吗?关于内存使用,java play 实例在生成时获得 512MB-1536MB,我可以从统计数据中看到内存平均使用率约为 50-70%,所以可能这不是问题所在(可能的内存泄漏等) .
我的日程安排非常紧张,因此我将不胜感激任何帮助/指针,我可以调查(或可能解决)这个问题。
非常感谢!