我们正在运行Jenkins服务器,其中包含少量运行构建的从属服务器。最近,有越来越多的构建在同一时间运行。 我看到Jenkins服务器上的java.exe进程只是增加了,即使作业完成也没有减少。
任何想法都会发生吗?
我们正在运行Jenkins ver。 1.501
有没有办法让Jenkins服务器服务等到最后一个作业完成,然后自动重启?
答案 0 :(得分:0)
我似乎无法找到关于此的参考(仍然发布一个答案,因为评论时间过长;-))但这是我使用Oracle JVM观察到的:
如果需要比当前保留的内存更多的内存,则JVM会保留更多内存。到现在为止还挺好。它似乎没有做的是一旦不再需要就释放内存。您可以通过打开Eclipse中的堆大小指示器来观察此行为。
我会说詹金斯也会这样。只有少数项目的Jenkins已经可以很容易地跳出1个gig标记。如果你有很多并发构建,Jenkins在某些时候需要大量内存。构建完成并且堆大小减少后,JVM会保留内存。它实际上是“空的”但仍然由JVM声明,因此它不可用于其他进程。
再次:这只是一个观察。如果有更深入了解Java内存管理的人会支持(或反驳),我会很高兴至于一个实用的解决方案,我会说你必须在某种程度上忍受它。詹金斯非常渴望记忆。重新启动它只能暂时解决问题。至少它应该在某些时候停止声称内存,因为应该重用“空”保留内存。如果不是这听起来像是内存泄漏并且会成为一个错误。
答案 1 :(得分:0)
我们还发现Monitoring Plugin对于密切关注内存使用情况并帮助我们了解是否需要尽快重启Jenkins非常有用。
有没有办法让Jenkins服务器服务等到最后一个作业完成,然后自动重启?