3

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
                }
            }

        }

    }

}   

もう1つ、アプリケーションが1日ほど実行された後、速度が低下し始めます。(htopを使用して)リソースを確認すると、CPU使用率が100%であることがわかります。したがって、ノードが多くの作業を行ってスタックしているため、応答が大幅に遅延していることがわかります。さらに、平均して多くのJavaインスタンス(8〜10)が生成されていることがわかります。何故ですか?Playアプリが非常に多くのJavaインスタンスを生成するのは自然なことですか?memの使用法については、Java Playインスタンスはスポーン時に512MB〜1536MBを取得します。統計から、メモリは平均で約50〜70%使用されているため、問題が発生している場所ではない可能性があります(memリークの可能性など) 。

私は非常に厳しいスケジュールで実行しているので、この問題を調査(または修正)するためのヘルプ/ポインターをいただければ幸いです。

本当にありがとう!

4

1 に答える 1

0

IO をブロックしている可能性があると思います。そのため、retrieveBodyParserTimeout = 10 secondハックが必要です。非同期にしてみてください。

于 2012-12-06T19:52:42.433 に答える