Docker环境下如何设置 Tomcat容器 JVM内存?
2018-04-17 by dongnan
环境描述
容器: Docker 1.13.1
Tomcat虚拟机配置: 4vCpu/8GMem/100GDisk
宿主机: CentOS 7.3 amd64
虚拟化: XenServer 7.2
问题描述
某 java
项目测试环境(8个Tomcat
容器),基于 Rancher
平台 完成应用编排与持续集成,发现 Tomcat
容器内存消耗较大,极端情况会导致内存溢出,虚拟机宕机。
[9859307.999251] Out of memory: Kill process 3005 (plugin-manager) score 191 or sacrifice child
[9859307.999288] Killed process 3005 (plugin-manager) total-vm:2902852kB, anon-rss:2097196kB, file-rss:0kB, shmem-rss:0kB
解决方法
由于是测试环境,主要用于功能测试并没有大量请求与并发,所以限制 JVM
内存占用大小,例如: JAVA_OPTS='-Xmx512m'
rancher 上操作非常简单
-
如果已存在的项目,直接编辑项目并设置环境变量即可;
-
如果使用
docker-compose
创建新的项目,直接添加环境变量即可;
cat docker-compose.yml
# ....省略
demo:
image: tomcat
environment:
JAVA_OPTS= '-Xmx512m'
# ....省略