首页 > 解决方案 > 限制 docker 容器中的 MarkLogic 内存消耗

问题描述

我工作的项目开发了一个在后端使用 MarkLogic 9 的 Java 服务。我们正在运行一个 Jenkins 构建服务器,它在用 XQuery 编写的 MarkLogic 中执行(以及其他)几个测试。对于这些测试,MarkLogic 在 Jenkins 主机(运行 Ubuntu Linux)上的 docker 容器中运行。Jenkins 主机配置了 12 GB 的 RAM 和 8 GB 的交换空间。最近我注意到容器中运行的 MarkLogic 实例使用了大量的 RAM(高达 10 GB)。由于经常有其他构建作业并行运行,Jenkins 开始交换,有时甚至耗尽所有交换,因此 MarkLogic 报告它无法获得更多内存。显然,这种情况经常导致构建失败。

为了进一步分析这一点,我在运行 Docker for Windows 的 PC 上进行了一些测试,发现 MarkLogic 测试可以在 5-6 GB RAM 下成功运行。MarkLogic 日志显示它看到了所有主机内存并且想要使用所有内容。但是由于我们在该主机上运行了其他构建进程,因此这种行为是不可取的。

我的问题:有没有可能告诉 MarkLogic 不要使用这么多内存?我们正在构建期间准备 docker 映像,因此我们可以修改一些配置,但必须以某种方式编写脚本。

标签: dockermarklogicmarklogic-9

解决方案


容器未正确检测内存限制的问题已确定,应在即将发布的版本中解决。

同时,您可以通过以下方式缓解该问题:


推荐阅读