play frameworkの自動起動設定
簡単なplayのアプリケーションを作ってさくっとデプロイして本番運用していたが、本番機のロードアベレージが常に1を上回るようになってびっくり。調べると、playのプロセスがCPUを専有していた。単純にplay runで起動していたが、これを変更。
プロジェクト内で
$ play clean compile stage
を実行して、target/startファイルが作る。このとき自動起動の環境が整えられるらしい。あとは/etc/init.d/playなどに、
cd /usr/local/play/name_of_project
target/start -server -Xms128m -Xmx128m &
などとするとよい。終了用には
cd /usr/local/play/name_of_project
kill -TERM `cat RUNNING_PID`
play-2.2.3で変更があったもよう。startコマンドはtarget直下ではなく、
target/universal/stage/bin/name_of_project
に変更になった。コマンド名もstartではなくなった。起動スクリプトには以下のように書くべし。
cd /usr/local/play-2.2.3/name_of_project
target/universal/stage/bin/name_of_project -Dhttp.port=9001 > /dev/null 2>&1 &
停止時に使うRUNNING_PIDもtarget直下からtarget/universal/stageに移動した。