我们知道什么?
- openjdk 11 + Jenkins 在 openshift 4 上,24/7 运行和工作
- 基于Java Process的常驻内存使用量增长(RSS),我们使用MALLOC_ARENA_MAX=4
- 容器/pod中没有其他进程
- lsof 文件句柄稳定
- kubernetes“container_memory_working_set_bytes”增加而“container_memory_rss”稳定
- memory.stat 的“total_rss”保持稳定,top 和“jvm 本机内存跟踪”记录的所有内容也保持稳定 - 因此我们相信没有堆或类加载器等泄漏(我们一一修复它们 :))
我们不知道和不理解的:
- 3 天后,top 报告 /inline 与本机内存跟踪(和 container_memory_rss)~2g,而“container_memory_working_set_bytes”- 报告~3g(自容器启动以来一直在增长)
- 显示差异的图表位于https://github.com/opendevstack/ods-jenkins-shared-library/issues/857#issuecomment-1471786489
- 超过一天的 memory.stat 跟踪显示“mapped_file”和“active_file”随时间增加
有人知道如何调试这个,或者诊断 wr(on)g 发生了什么吗?