我们使用 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分钟左右建立一次,直到星期六晚上这个问题神奇地消失。

有帮助吗?

解决方案

这是哈德森问题715( http://issues.hudson- ci.org/browse/HUDSON-715 )。目前的建议是设置“最大同时轮询线程数”以保持轮询活动的正常运行。

其他提示

更改每进程最大打开文件描述符的系统限制?与Java进程的 ulimit -n 一样?

我在Debian上运行的另一个Java应用程序遇到了这个问题,当我们降级到Java版本1.6.0.0时它就消失了。 Java从未关闭未使用的连接,导致它抛出异常。

导致“打开文件太多”的最常见问题之一是在Jenkins中启用和配置Active Directory插件。该插件存在已知的问题,这些问题导致显示大量线程并且“打开的文件太多”。日志中的错误。在禁用它并切换到LDAP身份验证后,我没有遇到Jenkins再次挂起。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top