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リークの可能性など) 。
私は非常に厳しいスケジュールで実行しているので、この問題を調査(または修正)するためのヘルプ/ポインターをいただければ幸いです。
本当にありがとう!