Playフレームワーク2.4.3から2.5.0(java)にアップグレードしました。ただし、アップグレード後、数分後にテストがタイムアウトになります。アップグレードの前に、彼らはエラーなしで1時間走った。Play framework [2.5.0 java] - タイムアウトの原因となったブロックされたnetty-event-loopスレッド
一部のスレッドがブロックされているように見え、システムが単に応答しなくなります。
YourkitのJavaプロファイラを使用して、私のマシン上でロードテストのローカルバージョンをローカルで実行しています。最初に、開始されたスレッドは16 netty-event-loop
です。
を彼らは私が負荷テストでタイムアウトを取得を開始ブロックすると約分後、私は彼らがブロックし始めていることがわかります。 私がテストをオフにした場合、これらのスレッドが回復するように見える:
私はここで誰かが私たちがこれを引き起こしているかを判断することができます期待しています。 Play 2.5へのアップグレードに必要な変更を除いて、コードを変更していません。ここで
は、私たちがapplication.conf
で使用しているアッカ・スレッド・プールの設定です:
akka {
fork-join-executor {
# The parallelism factor is used to determine thread pool size using the
# following formula: ceil(available processors * factor). Resulting size
# is then bounded by the parallelism-min and parallelism-max values.
parallelism-factor = 3.0
# Min number of threads to cap factor-based parallelism number to
parallelism-min = 8
# Max number of threads to cap factor-based parallelism number to
parallelism-max = 64
# Setting to "FIFO" to use queue like peeking mode which "poll" or "LIFO" to use stack
# like peeking mode which "pop".
task-peeking-mode = "FIFO"
}
}
プロファイラがブロックされたスレッドに関する以下の情報を示しています
誰でもいくつかの洞察を提供することができます私たちが間違っているかもしれないことに? ご協力いただきありがとうございます。
あなたは 'sbt run'を使用していますか、運用モードでアプリを実行していますか? – marcospereira
ローカルテスト(これらのスクリーンショットを取得)では、Lightbendアクティベータ/ sbt実行を使用してDEVモードでアプリケーションを実行しています。しかし、私たちのテスト環境では、プロダクションモードで動作しています。 – OGG
2.5.0にアップグレードした後も同じです。 Deadboldを使用していません。 まだバグを探しています。 – gun