我试图在我的Play 2.0.2应用程序上进行一些负载测试,但是我经常遇到以下异常:
无法调用操作,最终得到一个错误:引发(akka.pattern.AskTimeoutException: Timed )
我正在使用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实例是很自然的吗?关于mem的使用,java play实例在产卵时得到512 70 1536 70,从统计数据中我可以看到内存平均使用了50-70%,所以可能不是问题所在(可能是mem泄漏等等)。
我的日程安排非常紧,所以我希望能找到任何帮助/建议来调查(或者可能解决)这个问题。
谢谢一堆人!
发布于 2012-12-06 19:52:42
我认为您可能有一些阻塞IO,这就是您需要retrieveBodyParserTimeout = 10 second攻击的原因。试着让它异步。
https://stackoverflow.com/questions/12686706
复制相似问题