【发布时间】:2018-10-30 03:39:38
【问题描述】:
我们正在生产环境中运行 NiFi 1.6.0 的 Docker 容器,并且不得不遇到内存泄漏问题。
一旦启动,应用程序运行良好,但是在 4-5 天后,主机上的内存消耗不断增加。在 NiFi 集群 UI 中检查时,JVM 堆大小几乎没有使用 30% 左右,但操作系统级别的内存达到 80-90%。
在运行 docker starts 命令时,我们发现 NiFi docker 容器正在消耗内存。
收集 JMX 指标后,我们发现 RSS 内存不断增长。这可能是什么潜在原因?在集群对话框的 JVM 选项卡中,年轻 GC 似乎也在及时发生,旧 GC 计数显示为 0。
我们如何确定导致 RSS 内存增长的原因?
【问题讨论】:
-
您是否已经开始查看堆转储?您有理由怀疑应用程序源中的任何内容都在泄漏内存?你能提供一个minimal reproducible example 一个有用的应用程序源子集吗?
-
除了上面列出的项目之外,您使用的是 Apache NiFi 提供的便利二进制文件(例如hub.docker.com/r/apache/nifi)还是自定义图像?
-
@DavidMaze,我现在没有头文件,但我肯定可以提取它。 docker 容器正在运行github.com/apache/nifi,使用它的预构建处理器并执行脚本处理器。
-
@apiri 我们已经编写了我们的 Dockerfile,它与 docker hub 上的几乎相同,只是入口点发生了变化。
-
更多关于你的执行脚本处理器的细节会很有趣。如果您能够分享他们正在做的事情,那么那里可能会有一些东西。堆转储会很有帮助,尤其是在条件衰减时以周期性方式进行
标签: docker memory-leaks apache-nifi