Linux中Too many open files 問題分析和解決

今天某個服務(wù)的日志中出現(xiàn)了大量的異常:

[WARN ] 2018-06-15 16:55:20,831 --New I/O server boss #1 ([id: 0x55007b59, /0.0.0.0:20880])-- [org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink]  [DUBBO] Failed to accept a connection., dubbo version: 2.8.3.2, current host: 127.0.0.1 
java.io.IOException: Too many open files
        at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) ~[na:1.7.0_09-icedtea]
        at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:226) ~[na:1.7.0_09-icedtea]
        at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink$Boss.run(NioServerSocketPipelineSink.java:244) ~[netty-3.2.5.Final.jar:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_09-icedtea]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_09-icedtea]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09-icedtea]

Too many open files這個問題主要指的是進(jìn)程企圖打開一個文件囚聚,或者叫句柄粥惧,但是現(xiàn)在進(jìn)程打開的句柄已經(jīng)達(dá)到了上限,已經(jīng)無法打開新句柄了。

網(wǎng)上一提到這個問題就要增加句柄上限简珠,而往往這種情況的發(fā)生是因?yàn)殄e誤的使用了句柄猜揪,可以稱作句柄泄漏惭墓,找到句柄達(dá)到上限的原因才是王道。

以下是Linux中句柄的介紹
Linux中所有的事物或資源都是以文件的形式存在而姐,比如消息腊凶、共享內(nèi)存、連接等拴念,句柄可以理解為指向這些文件的指針钧萍。
對于這些句柄,Linux是有數(shù)量限制的政鼠,單個進(jìn)程默認(rèn)可以打開的句柄數(shù)上限风瘦,可以用以下命令來查看:

ulimit -a

執(zhí)行結(jié)果如下:


image.png

其中的open files一項(xiàng)就是默認(rèn)的句柄數(shù),此時默認(rèn)的句柄數(shù)是1024
還可以設(shè)置某個進(jìn)程的句柄數(shù)上限公般,命令是:

ulimit -a PID

執(zhí)行結(jié)果如下:


image.png

也是看open files一項(xiàng)万搔,可以看到,該進(jìn)程的句柄上限也是1024
這個句柄數(shù)是可以改的官帘,修改默認(rèn)的句柄數(shù)蟹略,命令如下:
ulimit -n 2000
這個命令可以把默認(rèn)的句柄數(shù)改為2000,但系統(tǒng)重啟后會恢復(fù)默認(rèn)值
這個文件在系統(tǒng)中的默認(rèn)值配置在/etc/security/limits.conf文件中遏佣,加入以下配置:

  • soft nofile 2000
  • hard nofile 2000
    或者
    • nofile 2000
      其中hard的設(shè)置是實(shí)際的默認(rèn)值挖炬,也就是上限,而soft的配置只是用來警告的状婶,如果超過了soft的值意敛,會有warn,而第三種用短橫線– 的配置膛虫,則是hard和soft同時配置的方式草姻。

下面看一下如何查詢系統(tǒng)中進(jìn)程占用的句柄數(shù)

使用的命令是:

lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

lsof命令是Linux中的一個系統(tǒng)監(jiān)視命令,可以查看進(jìn)程打開的文件稍刀、端口等撩独,功能強(qiáng)大敞曹,上面的命令通過一串的管道后只保留了句柄數(shù)和PID,執(zhí)行結(jié)果如下:


image.png

第一列是句柄數(shù)综膀,第二列是進(jìn)程id
可以看到前兩個進(jìn)程的句柄數(shù)已經(jīng)超過上限了澳迫,這正是這兩個進(jìn)程的日志正在報文章最上方的異常。
下面查詢某個進(jìn)程都占用了一些什么樣的句柄
比如查詢PID為25950的進(jìn)程剧劝,使用的命令是

lsof |grep 25950

執(zhí)行結(jié)果如下:


image.png

這里是截取的一部分橄登,每列的含義如下:
1,進(jìn)程名稱
2讥此,PID
3拢锹,進(jìn)程所有者
4,文件描述符
5萄喳,文件類型

文件類型有以下幾種:
DIR:表示目錄卒稳。
CHR:表示字符類型。
BLK:塊設(shè)備類型他巨。
UNIX: UNIX 域套接字展哭。
FIFO:先進(jìn)先出 (FIFO) 隊(duì)列。
IPv4:網(wǎng)際協(xié)議 (IP) 套接字闻蛀。
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節(jié)點(diǎn)(文件在磁盤上的標(biāo)識)
NAME:打開文件的確切名稱
在我查看的這個進(jìn)程中,有異常大量的IPv4類型文件被打開您市,以此為線索可以分析出具體的句柄超限的原因觉痛。在文章最開始的例子中,是因?yàn)槌绦虿煌5膶α硪慌_服務(wù)器發(fā)起連接茵休,導(dǎo)致句柄超上限(從異常信息中其實(shí)也能分析出來)薪棒。

原文鏈接:https://blog.csdn.net/lkforce/article/details/80710459

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市榕莺,隨后出現(xiàn)的幾起案子俐芯,更是在濱河造成了極大的恐慌,老刑警劉巖钉鸯,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吧史,死亡現(xiàn)場離奇詭異,居然都是意外死亡唠雕,警方通過查閱死者的電腦和手機(jī)贸营,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岩睁,“玉大人钞脂,你說我怎么就攤上這事〔度澹” “怎么了冰啃?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我阎毅,道長焚刚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任净薛,我火速辦了婚禮汪榔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肃拜。我一直安慰自己痴腌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布燃领。 她就那樣靜靜地躺著士聪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猛蔽。 梳的紋絲不亂的頭發(fā)上剥悟,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音曼库,去河邊找鬼区岗。 笑死,一個胖子當(dāng)著我的面吹牛毁枯,可吹牛的內(nèi)容都是我干的慈缔。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼种玛,長吁一口氣:“原來是場噩夢啊……” “哼藐鹤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赂韵,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤娱节,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后祭示,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肄满,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年质涛,在試婚紗的時候發(fā)現(xiàn)自己被綠了悄窃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹂窖,死狀恐怖轧抗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞬测,我是刑警寧澤横媚,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布纠炮,位于F島的核電站,受9級特大地震影響灯蝴,放射性物質(zhì)發(fā)生泄漏恢口。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一穷躁、第九天 我趴在偏房一處隱蔽的房頂上張望耕肩。 院中可真熱鬧,春花似錦问潭、人聲如沸猿诸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梳虽。三九已至,卻和暖如春灾茁,著一層夾襖步出監(jiān)牢的瞬間窜觉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工北专, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留禀挫,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓拓颓,卻偏偏與公主長得像语婴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子录粱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容