我创建了JHipster项目并试图通过linux机器执行它。所有容器都创建得很好,我可以用#34; docker ps"并查看" docker stats"。
的使用情况然而,内存不断上升..最终我的笔记本电脑(核心i5,10GB RAM)停止响应并死机!
我在docker_compose.yml上的每个服务定义上尝试使用mem_limit,我可以看到限制器工作于docker stats ...但是内存不断上升,当容器获得> 95%的使用率已经死了......容器停止工作并被移除。所以..这个设置只是阻止我的电脑死...但没有别的。
我也尝试用set JAVA_OPTS设置-xmx和docker_compose.yml中的其他内存参数......但结果是一样的。
注册表,网关,商业微服务和UAA至少需要1.5GB才能启动,其他图像/容器(mysql,elasticsearch等)可以使用512m。但是有4 x 1.5GB和几个512mb消耗了我所有的记忆。 JHipster Registry应该可以使用512mb。我在Heroku上设置了一个512mb的注册表,它就可以了。
我正在运行基本操作系统(基于ubuntu 14.04),64位,内核3.19.0-59-通用,Java 1.8,Docker版本1.11.2构建b9f10c9,我在grub上进行了cgroups configuracion for memory (来自码头安装指南)。这是cat / proc / cgroups的结果:
#subsys_name hierarchy num_cgroups enabled
cpuset 1 4 1
cpu 2 4 1
cpuacct 3 4 1
memory 4 7 1
devices 5 4 1
freezer 6 4 1
net_cls 7 4 1
blkio 8 4 1
perf_event 9 4 1
net_prio 10 4 1
hugetlb 11 4 1
还有一件事......我尝试了这个回购https://github.com/kbastani/spring-cloud-microservice-example中的项目并且有完全相同的问题..内存一直在上升。
我希望你能帮到这个。
谢谢!
答案 0 :(得分:0)
容器需要更多内存,限制它们可以拥有多少内存并不会改变它。
当内存过高(95%)时,Linux OOM杀手会介入以保护您的系统免受严重的厄运(请参阅OOM Killer)
TL; DR 运行更少的容器或获得更多内存。