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
相關文章
相關標籤/搜索