【jenkins報錯】-Error: EMFILE: too many open files

今天新搭建了1臺jenkins,發佈前端代碼時報錯:
Error: EMFILE: too many open files
在這裏插入圖片描述

百度了一下,說是系統設置的最大打開文件數太小,修改了系統最大打開文件數,仍然報錯。 ssh進服務器手動執行jenkins腳本卻成功了,想到jenkins是一個進程(服務),通過進程去執行,是否該進程最大支持的文件數太小,查看發現只有4096,修改成65535後不再報錯。

以下是相關命令
查看系統最大打開文件數

[root@ruhr-gitlab ~]# ulimit -n
65535

查看全部限制

[root@ruhr-gitlab ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 127020
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@ruhr-gitlab ~]# 

臨時修改數量

[root@ruhr-gitlab ~]# ulimit -n 655350
[root@ruhr-gitlab ~]# ulimit -n
655350

永久修改數量(需重啓服務器)

[root@ruhr-gitlab ~]# vim /etc/security/limits.conf
#添加以下幾行
* soft nproc unlimited
* hard nproc unlimited
* soft nofile 655350
* hard nofile 655350

可以臨時和永久都修改,只要服務器不宕機或重啓,會一直生效,萬一宕機或重啓以後,因爲配置了/etc/security/limits.conf,所以也沒關係。

查看單個進程打開的文件數量上限

  • 先找到進程PID
    以jenkins爲例,PID是19369
[root@ruhr-gitlab ~]# ps -ef | grep jenkins
root      19369     1 16 13:49 pts/2    00:03:04 java -jar jenkins.war --httpPort=10010
root      9556  9261  0 14:09 pts/4    00:00:00 grep --color=auto jenkins
[root@ruhr-gitlab ~]# 
  • 查看進程能打開的文件數量上限
[root@ruhr-gitlab ~]# cat /proc/19369/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             127020               127020               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       127020               127020               signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        
[root@ruhr-gitlab ]#

可以看到max_open_files是4096

修改單個進程打開的文件數量上限
修改/etc/security/limits.conf/etc/security/limits.d/20-nproc.conf,完了重啓jenkins服務即可

[root@ruhr-gitlab ]# vim /etc/security/limits.d/20-nproc.conf
*          soft    nproc     65535
root       soft    nproc     unlimited

驗證
這裏實際生效的/etc/security/limits.conf的配置。
它和/etc/security/limits.d/20-nproc.conf的區別我還不太清楚,等弄清楚了再補充進來

[root@ruhr-gitlab ~]# cat /proc/9136/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             unlimited            unlimited            processes 
Max open files            655350               655350               files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       127020               127020               signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        
[root@ruhr-gitlab ~]# 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章