跳转至

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'
# ....省略
回到页面顶部