Linux最大打開文件描述符數

1.   系統最大打開文件描述符數:/proc/sys/fs/file-maxide

a.   查看spa

$ cat /proc/sys/fs/file-max.net

186405blog

2.設置進程

a.   臨時性it

# echo 1000000 > /proc/sys/fs/file-maxclass

2.   永久性:在/etc/sysctl.conf中設置登錄

fs.file-max = 1000000file

 

2.   進程最大打開文件描述符數:user limit中nofile的soft limit權限

a.   查看

$ ulimit -n

1700000

2.設置

a.   臨時性:經過ulimit -Sn設置最大打開文件描述符數的soft limit,注意soft limit不能大於hard limit(ulimit -Hn可查看hard limit),另外ulimit -n默認查看的是soft limit,可是ulimit -n 1800000則是同時設置soft limit和hard limit。對於非root用戶只能設置比原來小的hard limit。

查看hard limit:

$ ulimit -Hn

1700000

設置soft limit,必須小於hard limit:

$ ulimit -Sn 1600000

2.   永久性:上面的方法只是臨時性的,註銷從新登陸就失效了,並且不能增大hard limit,只能在hard limit範圍內修改soft limit。若要使修改永久有效,則須要在/etc/security/limits.conf中進行設置(須要root權限),可添加以下兩行,表示用戶chanon最大打開文件描述符數的soft limit爲1800000,hard limit爲2000000。如下設置須要註銷以後從新登陸才能生效:

chanon          soft    nofile          1800000

chanon          hard   nofile          2000000

設置nofile的hard limit還有一點要注意的就是hard limit不能大於/proc/sys/fs/nr_open,假如hard limit大於nr_open,註銷後沒法正常登陸。能夠修改nr_open的值:

# echo 2000000 > /proc/sys/fs/nr_open

 

3.   查看當前系統使用的打開文件描述符數

[root@localhost bin]# cat /proc/sys/fs/file-nr

5664        0        186405

其中第一個數表示當前系統已分配使用的打開文件描述符數,第二個數爲分配後已釋放的(目前已再也不使用),第三個數等於file-max。

 

4.   總結:

a.   全部進程打開的文件描述符數不能超過/proc/sys/fs/file-max

b.   單個進程打開的文件描述符數不能超過user limit中nofile的soft limit

c.   nofile的soft limit不能超過其hard limit

d.   nofile的hard limit不能超過/proc/sys/fs/nr_open


轉載來源:http://blog.csdn.net/superchanon/article/details/13303705/

相關文章
相關標籤/搜索