2013-11-23 13 views
9

私は本当に基本的なプレイがあります!単に通常のGETとPOSTのリクエストを2回処理してMySQLデータベースとやりとりするアプリです。Amazon EC2マイクロインスタンスでプレーフレームワークアプリを実行

play distを実行し、zipファイルをEC2インスタンスに転送しました。 binフォルダに行くと./myappを実行し、それを解凍した後、私はメッセージを取得:

Java HotSpot(TM) 64-Bit Server VM warning: Info: os::commit_memory ... error='Cannot allocate memory' (errorno=12) 
There is insufficient memory for the Java Runtime Environment to continue. 

私がプレイバージョン2.2.1を実行していると、このインスタンスは、約512メガバイトのRAMを持っている、64ビット版とOracle JDKこれは演劇を実行するのに十分ではありません!アプリか何かが欠けていますか?

ありがとうございました。

+0

私も使用してそれを実行してみた-J-サーバopenjdkと同様のエラーメッセージが表示される:「オブジェクトヒープに十分なスペースを確保できませんでした」 – Henrique

+0

小さなヒープで再生できます。 –

+0

binスクリプトのオプションをチェックアウトして、より少量のメモリを割り当てることもできます。 –

答えて

3

を使用するplay 2.2.1私はplay distを実行してzipファイルを生成しなければなりませんでした。その後、それをawsインスタンスにコピーしました。 はかつてそこに、私は、zipファイルを抽出し、実行可能ファイルに変更:から

を:

local mem=${1:-1024} 

へ:私のためにそれをやった

local mem=${1:-512} 

。私はhereからアイディアを得ましたが、そこにあったロジックを削除したくないので、デフォルト値を減らしました。

はまた、AWSのEC2のマイクロ上の点に注意してください。

$ java -version 
java version "1.6.0_24" 
OpenJDK Runtime Environment (IcedTea6 1.11.14) (amazon-65.1.11.14.57.amzn1-x86_64) 
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) 

ですから、play distをのrunninとき、同じJava JDKを使用する必要があります。

EDIT:

私は7 OpenJDKのするためのJavaを更新し、エラーなしでサンプル再生アプリケーションを実行することができました。

+0

これは魅力的なように機能しましたが、このプロセスを自動化する方法があるので、すべてのアップデートで編集を実行する必要はありませんか? – somid3

+1

これはうまくいく - $/path/to/bin/<プロジェクト名> -mem 512 -J-server – somid3

14

Play Framework 2.3にはちょっとした機能があります。

$ /path/to/bin/<project-name> -mem 512 -J-server 

Shouleは仕事を終えます。あなたは、起動スクリプトに任意のJVM引数を指定することができます 追加のJVM引数を指定

読むhttp://www.playframework.com/documentation/2.3-SNAPSHOT/ProductionConfiguration


。それ以外の場合は、デフォルトのJVM設定が使用されます。

$/path/to/bin/-J-Xms128M -J-Xmx512m -J-server 都合の良いことに、min、max、permgen、およびreservedメモリを設定することもできますコードキャッシュのサイズを一度に変更できます。式(最大メモリを表す)指定されたパラメータ与えられたこれらの値を決定 するために使用される:

$ /パス/に/ binに/ -mem 512

+1

ありがとう。私はデジタルocean 512 serverでplay2.3(activator) – JasonG

+1

で働いています。これはアクティベータでも動作します! ( 'アクチベータクリーンステージ-mem 512') –