【发布时间】:2016-10-10 02:07:39
【问题描述】:
我在 docker 容器中运行我的 java 应用程序。我使用 AWS Beanstalk。 docker 基础镜像是 CentOS。我在 Amazon Linux AMI for Beanstalk 上运行具有 4GB RAM 的 EC2 实例上的容器。
我应该如何配置容器和 JVM 内存设置。 现在我有:
4GB 在 Amazon Linux Beanstalk AMI ec2 实例上
我将 3GB 的 4 专用于一个 docker 容器
{
"AWSEBDockerrunVersion": 2,
"Authentication": {
"Bucket": "elasticbeanstalk-us-east-1-XXXXXX",
"Key": "dockercfg"
},
"containerDefinitions": [
{
"name": "my-service",
"image": "docker-registry:/myapp1.0.2",
"essential": true,
"memory": 3184,
"portMappings": [
{
"hostPort": 80,
"containerPort": 8080
}
]
}
}
JVM设置是
-Xms2560m
-Xmx2560m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:+ScavengeBeforeFullGC
-XX:+CMSScavengeBeforeRemark
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./heapdump.hprof
我能否将整个 ec2 实例内存专用于 4GB 的 docker 容器,并将 JVM 也设置为 4GB?
我认为当 JVM 无法分配 Xmx 内存参数所说的任何内容时,它可能会崩溃。如果是这样,我可以为容器和 JVM 使用的最佳值是什么?
现在我为 Amazon linux 本身留了 1GB 的空间,为在容器中运行的 CentOS 留了 512MB。 1.5GBwasted。能不能做得更好?
【问题讨论】:
标签: linux amazon-web-services docker jvm amazon-elastic-beanstalk