Play framework 2.0.x 的 AskTimeoutException

3

我试图对我的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%,因此可能不是问题所在(可能存在内存泄漏等问题)。
我时间非常紧张,因此我会感激任何我能得到的调查(或可能修复)此问题的帮助/指针。
非常感谢!

你的类型化演员接口是什么样子的? - Viktor Klang
1个回答

0

我认为你可能有一些阻塞IO,这就是为什么你需要retrieveBodyParserTimeout = 10秒的hack。尝试将其变成异步。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接