播放框架2.0.x AskTimeoutException

时间:2012-10-02 08:16:39

标签: playframework playframework-2.0

我正在尝试对我的Play 2.0.2应用进行一些负载测试,但我一直遇到以下异常:

无法调用该操作,最终出现错误:抛出(akka.pattern.AskTimeoutException:超时)

我正在使用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播放实例在产生时获得512MB-1536MB,我可以从统计数据中看到内存大约平均使用了50-70%,所以可能不是问题所在(可能是内存泄漏等)

我的运行时间非常紧张,所以我很感激我可以调查(或可能解决)这个问题的任何帮助/指示。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为你可能有一些阻止IO,这就是你需要retrieveBodyParserTimeout = 10 second黑客的原因。尝试将其设为异步。

相关问题