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

时间:2013-11-23 02:26:15

标签: 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.

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

感谢。

2 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:3)

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

从:

local mem=${1:-1024}

为:

local mem=${1:-512}

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

另请注意,关于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)

因此,在运行play dist时必须使用相同的Java JDK。

编辑:

我将java更新为 openjdk 7 ,并且能够毫无错误地运行示例播放应用程序。