我们使用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 分钟左右构建一次,直到周六晚上某个时候问题神奇地消失了。