Play framework動作環境のチューニングに手をつける

このエントリはPlay frameworkひとりアドベントカレンダーの15日目です。

ネタなくなってもーた(´・ω・`)

というわけでだいたい作れるようになったので、Playの動作環境そのもののチューニングに手をつけていきましょう。

JVMチューニング

playコマンドから追っていくとわかるのですが、JVMの起動パラメータは、 ${PLAY_HOME}/framework/build にベタ書きされてます。

Macにbrewでインストールした場合、 /usr/local/Cellar/play/2.0.4/libexec/framework/build にあります。

zip解凍で入れた場合、解答したディレクトリを PLAY_HOME とすると、 ${PLAY_HOME}/framework/build にあります。

$ tail -1 /usr/local/Cellar/play/2.0.4/libexec/framework/build
java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -Dfile.encoding=UTF8 -Dplay.version="${PLAY_VERSION}" -Dsbt.ivy.home=`dirname $0`/../repository -Dplay.home=`dirname $0` -Dsbt.boot.properties=`dirname $0`/sbt/sbt.boot.properties -jar `dirname $0`/sbt/sbt-launch.jar "$@"

ここをちょちょっと書き換える以外になさそうな感じ。
なんということでしょう。。。

タイムアウトを伸ばす

なんかいろいろやってると、

[error] play - Cannot invoke the action, eventually got an error: Thrown(akka.pattern.AskTimeoutException: Timed out)

なんてエラーが出る時があります。
そんな時はtimeoutを伸ばしましょう。

Play framework2ではAkkaなるものを使っているようです。

${PLAY_HOME}/repository/local/com.typesafe.akka/akka-actor/2.0.2/ivys/ivy.xml を見ると、Akka 2.0.2を利用しているようです。

なので、このAkka用の設定を、各プロジェクトの /conf/application.conf に書いて調整します。

play.akka.actor.retrieveBodyParserTimeout = 30s

めでたしめでたし。


See also