Centos linux 最大文件數

 

在做linux服務器程序的時候,當流量上來,linux服務器的默認單進程的文件打開數肯定是不夠的,一般非root用戶進程默認只有1024個文件打開權限,所有對文件的操作,對網絡的操作,在linux下都作爲一個文件打開,所以在併發量大的時候,這個限制很快就達到了。一旦達到這個限制,應用程序就會報一個:too many open files的錯誤。解決這個問題就需要增大這個限制,下面是我在網上找到的,而且也已經應用在實際服務器的運維上:

linux默認下open files 是1024,首先看下系統現有的設置

[root@lpmaster ~]# ulimit -a

core file size          (blocks, -c) 0      ##設定core文件的最大值

data seg size           (kbytes, -d) unlimited  ##程序數據節區的最大值

scheduling priority             (-e) 0    ##

file size               (blocks, -f) unlimited  ##shell所能建立的最大文件

pending signals                 (-i) 71680

max locked memory       (kbytes, -l) 32   ##設置在內存中鎖定進程的最大值.

max memory size         (kbytes, -m) unlimited    ##設置可以使用的常駐內存的最大值.

open files                      (-n) 1024   ##設置內核可以同時打開的文件描述符的最大值.單位:n

pipe size            (512 bytes, -p) 8   ##設置管道緩衝區的最大值

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240   ##設置堆棧的最大值.單位:kbytes

cpu time               (seconds, -t) unlimited   ##設置CPU使用時間的最大上限.單位:seconds

max user processes              (-u) 71680  ##用戶最多可開啓的程序數目。

virtual memory          (kbytes, -v) unlimited  ##指定可使用的虛擬內存上限,單位爲KB。

file locks                      (-x) unlimited   
 參數介紹:
 -H 設置硬件資源限制.

 -S 設置軟件資源限制.

 -a 顯示當前所有的資源限制.

 -c size:設置core文件的最大值.單位:blocks

 -d size:設置數據段的最大值.單位:kbytes

 -f size:設置創建文件的最大值.單位:blocks

 -l size:設置在內存中鎖定進程的最大值.單位:kbytes

 -m size:設置可以使用的常駐內存的最大值.單位:kbytes

 -n size:設置內核可以同時打開的文件描述符的最大值.單位:n

 -p size:設置管道緩衝區的最大值.單位:kbytes

 -s size:設置堆棧的最大值.單位:kbytes

 -t size:設置CPU使用時間的最大上限.單位:seconds

 -v size:設置虛擬內存的最大值.單位:kbytes 


當看到open files 是1024,針對我的應用 是完全不夠用的,現在進行修改

[root@lpmaster ~]# ulimit -n 65535   ##設置 open files 打開的文件數65535

[root@lpmaster ~]# ulimit -n   #查看現在系統open files

65535

或者用另一種方法修改 

vim 打開 /etc/security/limits.conf,增加:

  * soft nofile 65535

  * hard nofile 65535

這行設置了每個用戶的默認打開文件數爲2048。注意"nofile"項有兩個可能的限制措施。就是項下的hard和soft。要使修改過得最大打開文件數生效,必須對這兩種限制進行設定。 如果使用"-"字符設定, 則hard和soft設定會同時被設定。 

硬限制表明soft限制中所能設定的最大值。 soft限制指的是當前系統生效的設置值。 hard限制值可以被普通用戶降低。但是不能增加。 soft限制不能設置的比hard限制更高。 只有root用戶才能夠增加hard限制值。

在對open files 修改最大值是,也可以檢查/proc/sys/fs/file-max文件來確認系統最大打開文件數的限制,另外還有一個,/proc/sys/fs/file-nr只讀,可以看到整個系統目前使用的文件句柄數量

也可以一般在啓動應用的時候先執行ulimit -HSn 65535,省得每個應用啓動都要執行ulimit -HSn 65535

所以我一般寫入到/etc/rc.local  ,這樣重啓的時候默認設置 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章