Linux最大文件打开数

Linux最大文件打开数

 

介绍

在Linux下有时会遇到Socket/File : Can't open so many files的问题。其实Linux是有文件句柄限制的,并且Linux默认通常都是1024(阿里云主机默认是65535)。在生产环境中很容易到达这个值,所以这里就会成为系统的瓶颈。html

1.查看方法

使用ulimit -a 或者 ulimit -nlinux

open files (-n) 1024 是linux操做系统对一个进程打开的文件句柄数量的限制(也包含打开的套接字数量)运维

这里只是对用户级别的限制,其实还有个是对系统的总限制,查看系统总线制:ide

# cat /proc/sys/fs/file-maxpost

man proc,可获得file-max的描述:this

/proc/sys/fs/file-max
              This  file defines a system-wide limit on the number of open files for all processes.  (See
              also setrlimit(2),  which  can  be  used  by  a  process  to  set  the  per-process  limit,
              RLIMIT_NOFILE,  on  the  number  of  files it may open.)  If you get lots of error messages
              about running out of file handles, try increasing this value:

即file-max是设置系统全部进程一共能够打开的文件数量 。同时一些程序能够经过setrlimit调用,设置每一个进程的限制。若是获得大量使用完文件句柄的错误信息,是应该增长这个值。阿里云

 

也就是说,这项参数是系统级别的。url

2.修改方法

 临时生效:

# ulimit -SHn 10000
其实ulimit 命令身是分软限制和硬限制,加-H就是硬限制,加-S就是软限制。默认显示的是软限制,若是运行ulimit 命令修改时没有加上-H或-S,就是两个参数一块儿改变。spa

软限制和硬限制的区别?操作系统

硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。

永久生效

要想ulimits 的数值永久生效,必须修改配置文件/etc/security/limits.conf 
在该配置文件中添加

* soft nofile 65535   

* hard nofile 65535  

echo "* soft nofile 65535"  >> /etc/security/limits.conf

echo "* hard nofile 65535"  >> /etc/security/limits.conf

* 表示所用的用户

修改系统总限制

其实上的修改都是对一个进程打开的文件句柄数量的限制,咱们还须要设置系统的总限制才能够。

假如,咱们设置进程打开的文件句柄数是1024 ,可是系统总线制才500,因此全部进程最多能打开文件句柄数量500。从这里咱们能够看出只设置进程的打开文件句柄的数量是不行的。因此须要修改系统的总限制才能够。

echo  6553560 > /proc/sys/fs/file-max

上面是临时生效方法,重启机器后会失效;

永久生效方法:

修改 /etc/sysctl.conf, 加入

fs.file-max = 6553560 重启生效

 

UnixFBI 运维特工 www.unixfbi.com
相关文章
相关标签/搜索