如何解决哈德森中的"打开文件过多"问题?
时间:2020-03-06 14:32:25 来源:igfitidea点击:
我们使用Hudson作为持续集成系统来执行我们许多项目的自动化构建(每夜进行一次,并且基于CVS轮询)。
有些项目每15分钟轮询一次CVS,另一些项目每5分钟轮询一次,有些则每小时轮询一次。
每隔几周,我们将获得一个失败的构建,并显示以下输出:
FATAL: java.io.IOException: Too many open files java.io.IOException: java.io.IOException: Too many open files at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
下一个构建始终有效(更改为0),因此我们总是将其归纳为最多同时运行2个构建作业,并且在此过程中碰巧打开了太多文件。
这个周末,我们在星期五晚上有一次构建失败的消息(自动的夜间构建),并显示了消息,并且每隔一个夜间构建也失败了。不知何故,这触发了哈德森(Hudson)不断构建每一个失败的项目,直到问题解决。这导致每个项目每30分钟左右进行一次构建,直到星期六晚上某个时间该问题神奇消失为止。
解决方案
更改每个进程的最大打开文件描述符的系统限制?如在Java进程的ulimit -n
中一样?
这是哈德森(Hudson)第715期(http://issues.hudson-ci.org/browse/HUDSON-715)。当前的建议是设置"同时轮询线程的最大数量"以保持轮询活动减少。
我在Debian上运行的另一个Java应用程序遇到了这个问题,当我们降级到Java版本1.6.0.0时,它消失了。 Java从不关闭未使用的连接,从而引发异常。
请参阅https://wiki.jenkins-ci.org/display/JENKINS/I%27m+getting+too+many+open+files+error,以获取我们为我们解决此类问题所需的信息。