Linux 进程打开最大文件连接数Too many open files

首先出现这个提示的原因:应用程序打开的文件数量超过了系统设定值。

如何查看当前系统每个用户最大允许打开文件数量:

[root@registry ~]# 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) 3820
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
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) 3820
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

或者

[root@registry ~]# ulimit -n 
1024  

其中 open files (-n) 1024 表示每个用户最大允许打开的文件数量是1024

#查看一下当前已有的连接数,以此来判断open files 为1024 是否足够

[root@registry ~]# lsof -n  |awk '{print$2}'|sort |uniq -c |sort -nr |more
    590 5458
    445 1065
    306 638
    267 770
    190 5682
    189 5457
    158 704
    130 1194
    117 681
     81 1263
     68 5419
     66 640
     62 1
     60 5677
     57 678
     55 1067
     51 9036
     51 1196
     48 5698
     44 677
     44 470
     38 494
     32 637
     29 4430
     20 4614
     17 9250
     14 4566
     12 9256
     12 9251
     11 9254
     11 9252
     10 9255
     10 693
      9 9253
      3 92
      3 9037
      3 9033
      3 9
      3 8964
      3 8
      3 726

其中第一列是打开的文件句柄数量,第二列是进程id号

通过句柄数量最多的进程,查看是哪个应用程序打开了最多的文件句柄,通过命令:

[root@registry ~]# ps -aef |grep PID

设置open files 数值的方法

1.临时设置方法

[root@registry ~]# ulimit -n 4096
[root@registry ~]# 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) 3820
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 4096
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) 3820
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

这样就可以把当前用户的最大允许打开文件数量设置为4096,但这种设置方法在重启后会还原为默认值。

2.永久设置方法

[root@registry ~]# vim /etc/security/limits.conf
# End of file
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

在文件末尾添加上述四行,其中后面两行的 * 表示所有的用户,也可以根据需要设置某一个用户,比如www

# End of file
root soft nofile 65535
root hard nofile 65535
www  soft nofile 65535
www  hard nofile 65535

注销账户,重新登录即可生效。 

如果想查看某个进程最大允许打开的文件数量,可通过如下命令查看:

[root@registry ~]# top 
top - 15:39:21 up 101 days,  6:26,  1 user,  load average: 0.33, 0.57, 0.52
Tasks:  70 total,   1 running,  69 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.7 us,  0.0 sy,  0.0 ni, 93.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881824 total,   111956 free,  3505012 used,   264856 buff/cache
KiB Swap:  2047996 total,  1001156 free,  1046840 used.   123968 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                 
12872 www       20   0 2738092 743948   2292 S  6.7 19.2 652:05.43 java                                                                                                                    
    1 root      20   0   43380   2244   1352 S  0.0  0.1   4:11.26 systemd                                                                                                                 
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.31 kthreadd                                                                                                                
    3 root      20   0       0      0      0 S  0.0  0.0  28:18.97 ksoftirqd/0                                                                                                             
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                                            
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                                                                                                             
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                                                                                                  
    9 root      20   0       0      0      0 S  0.0  0.0  33:52.08 rcu_sched                                                                                                               
   10 root      rt   0       0      0      0 S  0.0  0.0   0:39.61 watchdog/0                                                                                                              
   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs                                                                                                               
   13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns                                                                                                                   
   14 root      20   0       0      0      0 S  0.0  0.0   0:07.72 khungtaskd                                                                                                              
   15 root       0 -20       0      0      0 S  0.0  0.0   0:00.18 writeback                                                                                                               
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd                                                                                                             
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset                                                                                                                  
   18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kblockd                                                                                                                 
   19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 md                                                                                                                      
   25 root      20   0       0      0      0 S  0.0  0.0  12:21.57 kswapd0                                                                                                                 
   26 root      25   5       0      0      0 S  0.0  0.0   0:00.00 ksmd                                                                                                                    
   27 root      39  19       0      0      0 S  0.0  0.0   0:17.32 khugepaged                                                                                                              
   28 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 crypto                                                                                                                  
   36 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kthrotld                                                                                                                
   38 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kmpath_rdacd                                                                                                            
   39 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kpsmoused                                                                                                               
   40 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ipv6_addrconf                                                                                                           
   59 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 deferwq                                                                                                                 
  101 root      20   0       0      0      0 S  0.0  0.0   0:03.48 kauditd                                                                                                                 
  225 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ata_sff                                                                                                                 
  233 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_0                                                                                                               
  234 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_0                                                                                                              
  235 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_1                                                                                                               
  236 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 scsi_tmf_1                                                                                                              
  240 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ttm_swap                                                                                                                
  252 root       0 -20       0      0      0 S  0.0  0.0   1:07.64 kworker/0:1H                                                                                                            
  257 root      20   0       0      0      0 S  0.0  0.0   3:12.26 jbd2/vda1-8                                                                                                             
  258 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 ext4-rsv-conver                                                                                                         
  325 root      20   0  119080   5460   5316 S  0.0  0.1   5:27.58 systemd-journal                                                                                                         
  354 root      20   0   44032      8      4 S  0.0  0.0   0:00.08 systemd-udevd                                                                                                           
[root@registry ~]# cat /proc/12872/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             65535                65535                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       15089                15089                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us  
posted @ 2019-04-26 15:23  caoss  阅读(2881)  评论(0编辑  收藏  举报