jenkins中job编译时出现“Too many open files”报错

avatar 2025年3月4日17:54:14 评论 45 次浏览

jenkins中的job在打包时,总是提示Too many open files,通常是因为系统中允许打开的文件句柄数量超过了限制。要解决这个问题,您可以按照以下步骤增加系统和 Jenkins 允许的最大文件数:

1. 检查当前系统的文件限制

您可以使用以下命令查看当前系统中每个用户允许打开的文件数:

 ulimit -n

2. 临时增加文件句柄限制

您可以使用以下命令临时增加最大文件数限制(例如设置为 65535):

 ulimit -n 65535

此更改仅在当前会话中有效。如果重新启动系统或 Jenkins 服务,此设置会恢复。

3. 永久修改文件句柄限制

要永久增加文件句柄限制,可以修改系统配置文件:

(1) 修改 /etc/security/limits.conf

编辑文件 /etc/security/limits.conf,添加以下内容:

 * soft nofile 65535
 * hard nofile 65535

这将为所有用户设置文件句柄限制为 65535。您可以根据需要调整值。

(2) 修改 /etc/sysctl.conf

为系统全局设置文件句柄限制,编辑文件 /etc/sysctl.conf,添加以下内容:

 fs.file-max = 65535

然后执行以下命令使配置生效:

 sudo sysctl -p

4. 配置 Jenkins 服务文件(systemd)

如果 Jenkins 通过 systemd 启动,您还需要修改其服务配置:先看一下jenkins的进行

 [root@wulaoer.org ~]# ps -ef | grep java
 root     18226     1 99 11:33 ?        00:00:24 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8080
 root     18316  1545  0 11:34 pts/0    00:00:00 grep --color=auto java
 [root@wulaoer.org ~]# cat /proc/18226/limits
 Limit                     Soft Limit           Hard Limit           Units
 Max cpu time              unlimited            unlimited            seconds
 Max file size             unlimited            unlimited            bytes
 Max data size             unlimited            unlimited            bytes
 Max stack size            8388608              unlimited            bytes
 Max core file size        0                    unlimited            bytes
 Max resident set          unlimited            unlimited            bytes
 Max processes             15072                15072                processes
 Max open files            4096                 4096                 files
 Max locked memory         65536                65536                bytes
 Max address space         unlimited            unlimited            bytes
 Max file locks            unlimited            unlimited            locks
 Max pending signals       15072                15072                signals
 Max msgqueue size         819200               819200               bytes
 Max nice priority         0                    0
 Max realtime priority     0                    0
 Max realtime timeout      unlimited            unlimited            us
(1) 编辑 Jenkins 的 systemd 服务文件

编辑 Jenkins 的 systemd 服务文件,通常位于 /etc/systemd/system/jenkins.service。在 [Service] 部分添加以下内容:

 LimitNOFILE=65535

(2) 重新加载并重启 Jenkins

执行以下命令重新加载 systemd 配置,并重启 Jenkins:

 sudo systemctl daemon-reload
 sudo systemctl restart jenkins

重启后查看一下jenkins的进程信息

 [root@wulaoer.org ~]# cat /proc/18495/limits
 Limit                     Soft Limit           Hard Limit           Units
 Max cpu time              unlimited            unlimited            seconds
 Max file size             unlimited            unlimited            bytes
 Max data size             unlimited            unlimited            bytes
 Max stack size            8388608              unlimited            bytes
 Max core file size        0                    unlimited            bytes
 Max resident set          unlimited            unlimited            bytes
 Max processes             15072                15072                processes
 Max open files            65535                65535                files
 Max locked memory         65536                65536                bytes
 Max address space         unlimited            unlimited            bytes
 Max file locks            unlimited            unlimited            locks
 Max pending signals       15072                15072                signals
 Max msgqueue size         819200               819200               bytes
 Max nice priority         0                    0
 Max realtime priority     0                    0
 Max realtime timeout      unlimited            unlimited            us

5. 重启后生效

重启系统或者 Jenkins 后,新的文件句柄限制将生效。如果问题依旧存在,您可以检查 Jenkins 日志,确保设置已成功应用。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: