【2019-01-28】 too many open files(打開的文件過多)解決方法

too many open files(打開的文件過多)是Linux系統(tǒng)中常見的錯誤轨蛤,從字面意思上看就是說程序打開的文件數過多,不過這里的files不單是文件的意思,也包括打開的通訊鏈接(比如socket),正在監(jiān)聽的端口等等少辣,所以有時候也可以叫做句柄(handle),這個錯誤通常也可以叫做句柄數超出系統(tǒng)限制羡蛾。

引起的原因就是進程在某個時刻打開了超過系統(tǒng)限制的文件數量以及通訊鏈接數漓帅,通過命令ulimit -a可以查看當前系統(tǒng)設置的最大句柄數是多少:

[tomcat@localhost bin]$ ulimit -a

core file size? ? ? ? ? (blocks, -c) 0

data seg size? ? ? ? ? (kbytes, -d) unlimited

scheduling priority? ? ? ? ? ? (-e) 0

file size? ? ? ? ? ? ? (blocks, -f) unlimited

pending signals? ? ? ? ? ? ? ? (-i) 14732

max locked memory? ? ? (kbytes, -l) 64

max memory size? ? ? ? (kbytes, -m) unlimited

open files? ? ? ? ? ? ? ? ? ? ? (-n) 1024

pipe size? ? ? ? ? ? (512 bytes, -p) 8

POSIX message queues? ? (bytes, -q) 819200

real-time priority? ? ? ? ? ? ? (-r) 0

stack size? ? ? ? ? ? ? (kbytes, -s) 10240

cpu time? ? ? ? ? ? ? (seconds, -t) unlimited

max user processes? ? ? ? ? ? ? (-u) 1024

virtual memory? ? ? ? ? (kbytes, -v) unlimited

file locks? ? ? ? ? ? ? ? ? ? ? (-x) unlimited

open files那一行就代表系統(tǒng)目前允許單個進程打開的最大句柄數,這里是1024。

使用命令lsof -p 進程id可以查看單個進程所有打開的文件詳情忙干,使用命令lsof -p 進程id | wc -l可以統(tǒng)計進程打開了多少文件:

[tomcat@localhost bin]$ jps

3092 Bootstrap

3197 Jps

[tomcat@localhost bin]$ lsof -p 3092 | wc -l

108

以裸啟動的tomcat為例屯伞,可以看到它目前打開了108個文件數锯梁,如果文件數過多使用lsof -p 進程id命令無法完全查看的話第岖,可以使用lsof -p 進程id > openfiles.log將執(zhí)行結果內容輸出到日志文件中查看。

二茁裙、解決方法

1弓乙、增大允許打開的文件數——命令方式

ulimit -n 2048

這樣就可以把當前用戶的最大允許打開文件數量設置為2048了末融,但這種設置方法在重啟后會還原為默認值。

ulimit -n命令非root用戶只能設置到4096暇韧。

想要設置到8192需要sudo權限或者root用戶勾习。

2、增大允許打開的文件數——修改系統(tǒng)配置文件

vim /etc/security/limits.conf?

#在最后加入?

* soft nofile 4096?

* hard nofile 4096?

或者只加入

* - nofile 8192

最前的 * 表示所有用戶懈玻,可根據需要設置某一用戶巧婶,例如

roy soft nofile 8192?

roy hard nofile 8192?

注意”nofile”項有兩個可能的限制措施。就是項下的hard和soft涂乌。 要使修改過得最大打開文件數生效艺栈,必須對這兩種限制進行設定。 如果使用”-“字符設定, 則hard和soft設定會同時被設定湾盒。

3湿右、檢查程序問題

如果你對你的程序有一定的解的話,應該對程序打開文件數(鏈接數)上限有一定的估算罚勾,如果感覺數字異常毅人,請使用第一步的lsof -p 進程id > openfiles.log命令,獲得當前占用句柄的全部詳情進行分析尖殃,

1)打開的這些文件是不是都是必要的丈莺?

2)定位到打開這些文件的代碼

3)是否程序操作了文件寫入,但是沒有進行正常關閉

4)是否程序進行了通訊送丰,但是沒有正常關閉(也就是沒有超時結束的機制)

如果程序中存在這些問題的話缔俄,無論系統(tǒng)句柄數設置的多么大,隨著時間的推移蚪战,也一定會占用完牵现。

---------------------

作者:張小鳴

來源:CSDN

原文:https://blog.csdn.net/roy_70/article/details/78423880

版權聲明:本文為博主原創(chuàng)文章,轉載請附上博文鏈接邀桑!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市科乎,隨后出現(xiàn)的幾起案子壁畸,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捏萍,死亡現(xiàn)場離奇詭異太抓,居然都是意外死亡,警方通過查閱死者的電腦和手機令杈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門走敌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逗噩,你說我怎么就攤上這事掉丽。” “怎么了异雁?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵捶障,是天一觀的道長。 經常有香客問我纲刀,道長项炼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任示绊,我火速辦了婚禮锭部,結果婚禮上,老公的妹妹穿的比我還像新娘面褐。我一直安慰自己空免,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布盆耽。 她就那樣靜靜地躺著蹋砚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摄杂。 梳的紋絲不亂的頭發(fā)上坝咐,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音析恢,去河邊找鬼墨坚。 笑死,一個胖子當著我的面吹牛映挂,可吹牛的內容都是我干的泽篮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼柑船,長吁一口氣:“原來是場噩夢啊……” “哼帽撑!你這毒婦竟也來了?” 一聲冷哼從身側響起鞍时,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤亏拉,失蹤者是張志新(化名)和其女友劉穎扣蜻,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體及塘,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡莽使,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笙僚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芳肌。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肋层,靈堂內的尸體忽然破棺而出亿笤,到底是詐尸還是另有隱情,我是刑警寧澤槽驶,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布责嚷,位于F島的核電站,受9級特大地震影響掂铐,放射性物質發(fā)生泄漏罕拂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一全陨、第九天 我趴在偏房一處隱蔽的房頂上張望爆班。 院中可真熱鬧,春花似錦辱姨、人聲如沸柿菩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枢舶。三九已至,卻和暖如春替久,著一層夾襖步出監(jiān)牢的瞬間凉泄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工蚯根, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留后众,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓颅拦,卻偏偏與公主長得像蒂誉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子距帅,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容