玩框架的2.0.x AskTimeoutException(Play framework 2.0.x

2019-09-23 08:06发布

我试图做我的播放2.0.2应用中的一些负载测试,但我一直运行到以下异常:

不能调用动作,最终得到了一个错误:抛出该异常(akka.pattern.AskTimeoutException:超时)

我使用http://blitz.io/做我的负载测试。

我的技术堆栈播放+ mysql的。

我没有使用我的应用程序的任何承诺。

这里的定制阿卡配置:

#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%,平均使用的统计数据看所以也许那不是哪里出了问题(可能MEM泄漏等) 。

我上的非常紧迫的时间运行,所以我希望得到任何帮助/指针我可以进入调查(或者可能是固定)这个问题。

多谢!

Answer 1:

我想你可能有一些阻塞的IO,这就是为什么你需要的retrieveBodyParserTimeout = 10 second黑客。 尝试使异步。



文章来源: Play framework 2.0.x AskTimeoutException