在Amazon EC2微实例中运行播放框架应用程序

Hen*_*que 9 amazon-ec2 playframework-2.0

我有一个非常基本的游戏!应用程序只是处理几个正常的GET和POST请求并与MySQL数据库进行对话,没什么特别的.

我运行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.
Run Code Online (Sandbox Code Playgroud)

我正在运行Play版本2.2.1,这个实例有大约512MB的ram,以及64位版本的Oracle JDK.这还不足以进行比赛!app或我错过了什么?

谢谢.

som*_*id3 14

Play Framework 2.3现在有一个漂亮的小功能.

$ /path/to/bin/<project-name> -mem 512 -J-server
Run Code Online (Sandbox Code Playgroud)

Shoule完成工作.

阅读http://www.playframework.com/documentation/2.3-SNAPSHOT/ProductionConfiguration


指定其他JVM参数您可以为启动脚本指定任何JVM参数.否则将使用默认的JVM设置:

$/path/to/bin/-J-Xms128M -J-Xmx512m -J-server为方便起见,您还可以一次性设置内存min,max,permgen和保留代码缓存大小; 给定提供的参数(代表最大内存),公式用于确定这些值:

$/path/to/bin/-mem 512 -J-server


Dav*_*idG 3

使用play 2.2.1我必须运行play dist才能生成 zip 文件。然后我将其复制到 aws 实例。到达那里后,我解压了 zip 并更改了可执行文件:

从:

local mem=${1:-1024}
Run Code Online (Sandbox Code Playgroud)

到:

local mem=${1:-512}
Run Code Online (Sandbox Code Playgroud)

那对我来说是这样的。我从这里得到了这个想法,但我不想只删除他们在那里的逻辑,所以我只是减少了默认值。

另请注意,在 aws ec2 micro 上:

$ 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)
Run Code Online (Sandbox Code Playgroud)

所以运行时必须使用相同的Java JDK play dist

编辑:

我将 java 更新到openjdk 7并且能够运行示例播放应用程序,没有任何错误。