2016-03-21 18 views
3

Playフレームワーク2.4.3から2.5.0(java)にアップグレードしました。ただし、アップグレード後、数分後にテストがタイムアウトになります。アップグレードの前に、彼らはエラーなしで1時間走った。Play framework [2.5.0 java] - タイムアウトの原因となったブロックされたnetty-event-loopスレッド

一部のスレッドがブロックされているように見え、システムが単に応答しなくなります。

YourkitのJavaプロファイラを使用して、私のマシン上でロードテストのローカルバージョンをローカルで実行しています。最初に、開始されたスレッドは16 netty-event-loopです。

blocked netty-event-loop threads

を彼らは私が負荷テストでタイムアウトを取得を開始ブロックすると約分後、私は彼らがブロックし始めていることがわかります。 私がテストをオフにした場合、これらのスレッドが回復するように見える:

recovering netty-event-loop threads

私はここで誰かが私たちがこれを引き起こしているかを判断することができます期待しています。 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" 
    } 
} 

プロファイラがブロックされたスレッドに関する以下の情報を示しています

Information from the thread monitor

誰でもいくつかの洞察を提供することができます私たちが間違っているかもしれないことに? ご協力いただきありがとうございます。

+0

あなたは 'sbt run'を使用していますか、運用モードでアプリを実行していますか? – marcospereira

+0

ローカルテスト(これらのスクリーンショットを取得)では、Lightbendアクティベータ/ sbt実行を使用してDEVモードでアプリケーションを実行しています。しかし、私たちのテスト環境では、プロダクションモードで動作しています。 – OGG

+1

2.5.0にアップグレードした後も同じです。 Deadboldを使用していません。 まだバグを探しています。 – gun

答えて

0

この問題は解決されたようです。テンプレートとコントローラの認証にDeadbolt-java 2.5.0-SNAPSHOTを使用していました。 Deadboltに関連してログにタイムアウトメッセージがいくつか表示されていました。

私たちはプロジェクトからDeadboltを完全に削除しました。負荷テストはこれまでよりも速く実行されています。

関連する問題