ulimit -n 4096linux
也就是限制用戶的最大文件打開數爲4096個shell
在網上查了關於怎麼查看文件打開數的文章大體有兩種說法centos
/proc/sys/fs/file-nr服務器
該文件與 file-max 相關,它有三個值:dom
已分配文件句柄的數目[來源[url]www.iocblog.net[/url]]socket
已使用文件句柄的數目google
文件句柄的最大數目url
該文件是隻讀的,僅用於顯示信息。spa
查看全部進程的文件打開數.net
lsof |wc -l
查看某個進程打開的文件數
lsof -p pid |wc -l
系統設置--ulimit
語 法:ulimit [-aHS][-c <core文件上 限>][-d <數據節區大小>][-f <文件大小>][-m <內存大小>][-n <文件數 目>][-p <緩衝區大小>][-s <堆疊大小>][-t <CPU時間>][-u <程序數 目>][-v <虛擬內存大小>]
補充說明:ulimit爲shell內建指令,可用來控制shell執行程序的資源。
參 數:
-a 顯示目前資源限制的設定。
-c <core文件上限> 設定core文件的最大值,單位爲區塊。
-d <數據節區大小> 程序數據節區的最大值,單位爲KB。
-f <文件大小> shell所能創建的最大文件,單位爲區塊。
-H 設定資源的硬性限制,也就是管理員所設下的限制。
-m <內存大小> 指定可以使用內存的上限,單位爲KB。
-n <文件數目> 指定同一時間最多可開啓的文件數。
-p <緩衝區大小> 指定管道緩衝區的大小,單位512字節。
-s <堆疊大小> 指定堆疊的上限,單位爲KB。
-S 設定資源的彈性限制。
-t <CPU時間> 指定CPU使用時間的上限,單位爲秒。
-u <程序數目> 用戶最多可開啓的程序數目。
-v <虛擬內存大小> 指定可以使用的虛擬內存上限,單位爲KB。
Linux系統的文件句柄數量問題
linux下面部署應用的時候,有時候會趕上socket/file: can‘t open so many files的問題,其實linux是有文件句柄限制的(就像winxp?),並且默認不是很高,通常都是1024,做爲一臺生產服務器,其實很容易就達到這個數量,所以咱們須要把這個值改大一些。 大概知道ulimit這個命令是相關的,上google搜索了一下,大多數說的很含糊,也沒有統一說一下,通過兩個小時看了很多文章終於弄清楚ulimit相關的一些配置問題。 咱們能夠用ulimit -a來查看全部限制值,我只關心文件句柄數量的問題 open files (-n) 1024 這個就是限制數量 這裏,有不少ulimit的文章都說的很含糊,究竟這個1024是系統的限制,仍是用戶的限制呢。其實,這個是用戶限制來的,完整的說法,應該是當前用戶準備要運行的程序的限制。 一、這個限制是針對單個程序的限制 二、這個限制不會改變以前已經運行了的程序的限制 三、對這個值的修改,退出了當前的shell就會消失 好比說,我先運行了一個程序a,而後經過ulimit修改了限制爲2048,而後運行b,而後退出了shell再登陸,而後運行c.那就只有b能夠打開2048個句柄。 若是咱們須要改變總體的限制值,或者咱們運行的程序是系統啓動的,應該怎麼處理呢 其中一個方法,是想ulimit修改命令放入/etc/profile裏面,可是這個作法並很差 正確的作法,應該是修改/etc/security/limits.conf 裏面有很詳細的註釋,好比 * soft nofile 2048 * hard nofile 32768 就能夠將文件句柄限制統一改爲軟2048,硬32768 這裏涉及另一個問題,什麼是軟限制,什麼是硬限制 硬限制是實際的限制,而軟限制,是warnning限制,只會作出warning 其實ulimit命令自己就有分軟硬設置,加-h就是硬,加-s就是軟 默認顯示的是軟限制,若是修改的時候沒有加上的話,就是兩個一塊兒改 配置文件最前面的一位是domain,設置爲星號表明全局,另外你也能夠針對不一樣的用戶作出不一樣的限制 修改了,從新登陸用ulimit一開就馬上生效了,不過以前啓動過的程序要從新啓動才能使用新的值。我用的是centos,彷佛有些系統須要重啓才能生效。 ulimit其實就是對單一程序的限制 那系統總限制呢 實際上是在這裏,/proc/sys/fs/file-max 能夠經過cat查看目前的值,echo來馬上修改 另外還有一個,/proc/sys/fs/file-nr 只讀,能夠看到整個系統目前使用的文件句柄數量 查找文件句柄問題的時候,還有一個很實用的程序lsof 能夠很方便看到某個進程開了那些句柄 也能夠看到某個文件/目錄被什麼進程佔用了。