You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins构建出现“Too many open files”异常,本地Maven构建正常

解决Jenkins构建Maven时"Too many open files"错误的方案

这个错误的核心原因是Jenkins进程运行时打开的文件描述符数量超出了系统给它设定的限制——命令行用户的文件描述符限制通常比Jenkins服务用户宽松,所以本地构建能成功。以下是具体解决步骤:

1. 确认当前限制

切换到Jenkins用户,查看当前的文件描述符软/硬限制:

su - jenkins -c "ulimit -n"  # 查看软限制
su - jenkins -c "ulimit -Hn" # 查看硬限制

2. 临时调整(重启后失效)

如果需要快速验证,可以临时提升Jenkins用户的文件描述符限制,再重启Jenkins:

su - jenkins -c "ulimit -n 65536"
systemctl restart jenkins

3. 永久提升限制

系统用户级配置

编辑/etc/security/limits.conf,添加以下配置(数值可根据实际情况调整,65536是常用的合理值):

jenkins soft nofile 65536
jenkins hard nofile 65536

Systemd服务配置(若Jenkins用systemd管理)

创建或编辑/etc/systemd/system/jenkins.service.d/override.conf文件:

[Service]
LimitNOFILE=65536

执行以下命令生效并重启Jenkins:

systemctl daemon-reload
systemctl restart jenkins

4. 优化Maven编译配置

启用编译进程fork

在项目的pom.xml中修改maven-compiler-plugin配置,启用fork模式让编译在独立进程中进行,避免单个进程打开过多文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version> <!-- 建议使用最新稳定版 -->
    <configuration>
        <fork>true</fork>
        <meminitial>512m</meminitial>
        <maxmem>1024m</maxmem>
    </configuration>
</plugin>

禁用createdFiles.lst生成

如果不需要追踪编译生成的文件,可以直接关闭这个功能,避免生成该文件时触发限制:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <createdFiles>false</createdFiles>
    </configuration>
</plugin>

5. 检查Jenkins JVM配置

编辑Jenkins的JVM参数配置文件(通常是/etc/default/jenkins),在JAVA_ARGS中添加参数避免JVM限制文件描述符:

JAVA_ARGS="$JAVA_ARGS -XX:-MaxFDLimit"

修改后重启Jenkins生效。

内容的提问来源于stack exchange,提问作者Ashmita Kanojia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:55:18