too many open files錯誤到底可以通過什么參數(shù)控制

在運行程序時,程序代碼本身沒有出錯,但是還是報了一個 too many open files,經(jīng)過查找后發(fā)現(xiàn)是linux系統(tǒng)本身對進程可以打開的文件有一個數(shù)量的限制。下面是解決方法

一 ulimit命令

Linux對于每個用戶,系統(tǒng)限制其最大進程數(shù)。為提高性能,可以根據(jù)設(shè)備資源情況,設(shè)置各linux 用戶的最大進程數(shù)。

參數(shù)

-a:顯示目前資源限制的設(shè)定; 
-c :設(shè)定core文件的最大值,單位為區(qū)塊; 
-d <數(shù)據(jù)節(jié)區(qū)大小>:程序數(shù)據(jù)節(jié)區(qū)的最大值,單位為KB;
-f <文件大小>:shell所能建立的最大文件,單位為區(qū)塊;
-H:設(shè)定資源的硬性限制,也就是管理員所設(shè)下的限制;
-m <內(nèi)存大小>:指定可使用內(nèi)存的上限,單位為KB; 
-n <文件數(shù)目>:指定同一時間最多可開啟的文件數(shù); 
-p <緩沖區(qū)大小>:指定管道緩沖區(qū)的大小,單位512字節(jié); 
-s <堆疊大小>:指定堆疊的上限,單位為KB; 
-S:設(shè)定資源的彈性限制; 
-t :指定CPU使用時間的上限,單位為秒; 
-u <程序數(shù)目>:用戶最多可開啟的程序數(shù)目;
 -v <虛擬內(nèi)存大小>:指定可使用的虛擬內(nèi)存上限,單位為KB。

所以我們可以通過ulimit -n查看到當(dāng)前shell里最多可開啟的文件數(shù)。一般默認是1024.

很明顯,在生產(chǎn)環(huán)境中,這個默認值是會慢慢超過的,也就產(chǎn)生了too many open files這個問題,現(xiàn)在我們需要去修改這個參數(shù)。

1.臨時方法 shell級限制

ulimit -n xxx

這種方式可以在本次連接中有效,下次重新登錄服務(wù)器時就會失效

2.長久方法 用戶級限制

通過修改 /etc/security/limits.conf實現(xiàn)

vi /etc/security/limits.conf

在文件末尾添加:

* soft nofile 4096 
* hard nofile 4096

這里添加了兩行四列,分別對應(yīng)下面四個參數(shù)說明:

username|@groupname type resource limit

用戶 類型 資源 限制

所以,在文件末尾添加的兩句命令就是:

任何用戶  軟件  任何文件   4096個文件
任何用戶  硬件  任何文件   4096個文件

修改完畢后,直接退出本次服務(wù)器連接 ,重新登錄一下就可,不必重啟服務(wù)器。

補充

1./proc/sys/fs/file-max限制不了/etc/security/limits.conf

2.只有root用戶才有權(quán)限修改/etc/security/limits.conf

3.對于非root用戶, /etc/security/limits.conf會限制ulimit -n,但是限制不了root用戶

4.對于非root用戶,ulimit -n只能越設(shè)置越小,root用戶則無限制

5.任何用戶對ulimit -n的修改只在當(dāng)前環(huán)境有效,退出后失效,重新登錄新來后,ulimit -n由limits.conf決定

6.如果limits.conf沒有做設(shè)定,則默認值是1024

7.當(dāng)前環(huán)境的用戶所有進程能打開的最大問價數(shù)量由ulimit -n決定

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引言 當(dāng)修改一個Linux系統(tǒng)參數(shù)或限制,比如文件打開數(shù)時,之前用到過的方式有ulimit、limits.conf...
    bluexiii閱讀 6,441評論 0 5
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,605評論 9 468
  • 今天發(fā)現(xiàn)了一個學(xué)習(xí)美語的好網(wǎng)站:www.voachinese.com Let's Learn English is...
    麥金閱讀 806評論 0 0
  • 中國一直是以龍為圖騰的,并且我們也自稱是龍的傳人;拿破侖說,遠東有頭雄獅,無論是龍還是雄獅,都很強大,但畢竟也會有...
    唐公子1閱讀 216評論 0 1
  • 昨天的效率降低了很多,也許是周五了吧,心靈需要休息,拖延就顯得相對 嚴重,周五你應(yīng)該干什么,或許應(yīng)該出去碼頭走一...
    律人閱讀 355評論 0 0

友情鏈接更多精彩內(nèi)容