【问题标题】:Play framework 2.0.x AskTimeoutException播放框架 2.0.x AskTimeoutException
【发布时间】:2012-12-07 03:52:42
【问题描述】:

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

无法调用动作,最终报错:Thrown(akka.pattern.AskTimeoutException: Timed out)

我正在使用http://blitz.io/ 进行负载测试。

我的技术栈是 Play + mysql。

我没有在我的应用中使用任何 Promise。

这是自定义的 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%,所以可能这不是问题所在(可能的内存泄漏等) .

我的日程安排非常紧张,因此如果我能提供任何帮助/指点来调查(或可能解决)此问题,我将不胜感激。

非常感谢!

【问题讨论】:

  • 你的类型化actor界面是什么样的?

标签: playframework playframework-2.0


【解决方案1】:

我认为您可能有一些阻塞 IO,这就是您需要 retrieveBodyParserTimeout = 10 second hack 的原因。尝试使其异步。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 2012-04-16
    • 1970-01-01
    • 2012-11-24
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多