Java 你如何解决;“打开的文件太多”;哈德逊的问题?

Java 你如何解决;“打开的文件太多”;哈德逊的问题?,java,exception,continuous-integration,build-automation,hudson,Java,Exception,Continuous Integration,Build Automation,Hudson,我们将其作为一个持续集成系统来执行许多项目的自动化构建(每夜一次,并基于CVS轮询) 有些项目每15分钟投票一次简历,有些项目每5分钟投票一次,有些项目每小时投票一次 每隔几周,我们将得到一个失败的生成,输出如下: FATAL: java.io.IOException: Too many open files java.io.IOException: java.io.IOException: Too many open files at java.lang.UNIXProcess.<

我们将其作为一个持续集成系统来执行许多项目的自动化构建(每夜一次,并基于CVS轮询)

有些项目每15分钟投票一次简历,有些项目每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)
FATAL:java.io.IOException:打开的文件太多
java.io.IOException:java.io.IOException:打开的文件太多
位于java.lang.UNIXProcess(UNIXProcess.java:148)
下一个构建始终有效(0次更改),因此我们总是将其记为同时运行的2个构建作业,并且在该过程中打开的文件过多


这个周末,我们在周五晚上有一个构建失败的消息(自动夜间构建),每隔一个夜间构建也失败。不知何故,这促使哈德逊不断地建造每一个失败的项目,直到问题得到解决。这导致每个项目每隔30分钟左右进行一次构建,直到周六晚上某个时候问题神奇地消失

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

这是Hudson第715期()。当前的建议是设置“同时轮询线程的最大数量”,以降低轮询活动。

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

请参阅我们需要从您那里获得什么来修复此类问题。

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

我们已经很久没有遇到这个问题了。如果它再次出现,我一定会将请求的信息发送到.Kohsuke-也许Jenkins的一个增强功能可以通过运行GC来关注文件描述符限制和自我修复?我们在内存大的盒子上运行(很快会在96G范围内),所以它可以在尝试GC之前运行一段时间。这听起来像是一个伟大的黑客!RFE在哪里?:-)