too many open files in system

報錯信息

standard_init_linux.go:190: open exec fifo caused "too many open files in system"
-bash: start pipeline: pgrp pipe: Too many open files in system
-bash: /usr/bin/df: Too many open files inn system
-bash: cannot make pipe for command substitution: Too many open files in system

排查指令

查看系統(tǒng)參數(shù)

# 查看ulimt參數(shù)值
ulimit -a
# 查看fs.file-max參數(shù)值
sudo sysctl fs.file-max
cat /proc/sys/fs/file-nr

統(tǒng)計文件句柄

方法一 - /proc/PID/fd

# 查看所有進(jìn)程數(shù)量
find /proc -maxdepth 1 -type d -name '[0-9]*' | wc -l
# 降序顯示進(jìn)程打開文件句柄數(shù)量
for pid in $(find /proc -maxdepth 1 -type d -name '[0-9]*'); do fn=$(sudo ls -al ${pid}/fd | wc -l); echo "$pid  $fn";done | sort -k2nr | head -n 20
# 查看PID持有的文件句柄數(shù)
sudo ls /proc/${PID}/fd | wc -l

方法二 - lsof

# 查看打開文件句柄總數(shù)
sudo lsof 2>/dev/null | awk '{print $2}'|wc -l
# 根據(jù)打開文件句柄數(shù)量降序顯示進(jìn)程ID
sudo lsof 2>/dev/null | awk '{print $2}'|sort|uniq -c|sort -nr|head 
# 使用 lsof 命令查看特定進(jìn)程號(PID)打開的文件
sudo lsof -p <PID>

參考資料

https://docs.kernel.org/filesystems/proc.html

/proc/PID/fd: Directory, which contains all file descriptors

https://linux.die.net/man/8/lsof

limits.conf超過限制導(dǎo)致ssh失敗_docker里limits.conf設(shè)置太大宿主機(jī)ssh連不上-CSDN博客

  • nofile的上限是由/proc/sys/fs/nr_open限制底挫,默認(rèn)是1048576,超過這個值會導(dǎo)致連接ssh失敗,報錯為:pam_limits(login:session): Could not set limit for ‘nofile’: Operation not permitted
  • limits.conf 文件實際是 Linux PAM(插入式認(rèn)證模塊,Pluggable Authentication Modules)中 pam_limits.so的配置文件薄霜,只針對單個會話。在登錄shell時,根據(jù)配置文件設(shè)置limits的值艾帐,由于設(shè)定的值過大導(dǎo)致設(shè)置失敗,無法登錄shell盆偿,ssh自然無法連接柒爸。

Linux 下 Too many open files 問題排查與解決 - Grey Zeng - 博客園

too many open files問題排查與解決 - 掘金

How to Fix the ‘Too Many Open Files’ Error in Linux? | Windows OS Hub

Linux系統(tǒng)報錯排查:Too many open files in system

補(bǔ)充信息

/proc/sys/fs/file-nr

/proc/sys/fs/file-nr文件是 Linux 系統(tǒng)中的一個虛擬文件,提供了有關(guān)系統(tǒng)打開文件句柄(file handles)的一些統(tǒng)計信息事扭。它的內(nèi)容通常由三個數(shù)字組成捎稚,分別表示以下信息:

  1. 已分配的文件句柄數(shù)量:這是系統(tǒng)當(dāng)前已分配的文件句柄的數(shù)量,包括所有打開的文件、套接字等今野。
  2. 已使用的文件句柄數(shù)量:這是當(dāng)前正在使用的文件句柄數(shù)量晰奖。這表示當(dāng)前有多少個文件或套接字處于打開狀態(tài)。
  3. 最大文件句柄數(shù)量:這是系統(tǒng)允許的最大文件句柄數(shù)量腥泥,通常由內(nèi)核參數(shù) fs.file-max 決定匾南。這個值可以通過修改 /etc/sysctl.conf 文件或使用 sysctl命令來調(diào)整。

示例內(nèi)容

假設(shè) /proc/sys/fs/file-nr的內(nèi)容如下:

1234    567    8192

這表示:

  • 1234:當(dāng)前已分配的文件句柄數(shù)量蛔外。
  • 567:當(dāng)前正在使用的文件句柄數(shù)量蛆楞。
  • 8192:系統(tǒng)允許的最大文件句柄數(shù)量。

使用場景

  • 性能監(jiān)控:通過監(jiān)控這些值夹厌,可以了解系統(tǒng)的文件句柄使用情況豹爹,從而判斷是否需要調(diào)整最大文件句柄數(shù)量。
  • 故障排除:如果應(yīng)用程序遇到“文件描述符不足”錯誤矛纹,可以檢查這些值來確定是否達(dá)到了系統(tǒng)限制臂聋。

訪問方式

你可以通過以下命令查看 /proc/sys/fs/file-nr 的內(nèi)容:

cat /proc/sys/fs/file-nr

ulimit

ulimit 是一個用于控制 shell 中用戶進(jìn)程的資源限制的命令。它可以設(shè)置或顯示用戶可以使用的系統(tǒng)資源的限制或南,包括文件大小孩等、進(jìn)程數(shù)量、內(nèi)存使用等采够。以下是一些常用的 ulimit 命令和選項:

常用選項

  1. 查看當(dāng)前限制:ulimit -a
    這會顯示所有的資源限制肄方,包括文件大小、進(jìn)程數(shù)量等蹬癌。
  2. 設(shè)置文件大小限制:ulimit -f [size]
    這會設(shè)置用戶可以創(chuàng)建的最大文件大小权她,單位為塊(通常是 512 字節(jié))。
  3. 設(shè)置最大進(jìn)程數(shù):ulimit -u [number]
    這會設(shè)置用戶可以創(chuàng)建的最大進(jìn)程數(shù)量逝薪。
  4. 設(shè)置最大打開文件數(shù):ulimit -n [number]
    這會設(shè)置用戶可以打開的最大文件數(shù)量隅要。
  5. 設(shè)置最大虛擬內(nèi)存:ulimit -v [size]
    這會設(shè)置用戶進(jìn)程可以使用的最大虛擬內(nèi)存,單位為 KB董济。
  6. 設(shè)置最大堆棧大胁角濉:ulimit -s [size]
    這會設(shè)置用戶進(jìn)程的最大堆棧大小,單位為 KB感局。

示例

  • 查看所有限制:
ulimit -a
  • 設(shè)置最大打開文件數(shù)為 2048:
ulimit -n 2048

注意事項

  • ulimit 的設(shè)置通常只對當(dāng)前 shell 會話有效尼啡,關(guān)閉 shell 后設(shè)置將失效。如果需要永久更改询微,可以將相應(yīng)的 ulimit 命令添加到用戶的 shell 啟動文件(如~/.bashrc/etc/security/limits.conf)崖瞭。

nofile 和 fs.file-max

nofilefs.file-max 都與文件描述符的管理有關(guān),但它們的作用和定義有所不同撑毛。以下是它們的區(qū)別和聯(lián)系:

1. nofile 參數(shù)

  • 定義:nofile 是一個用戶級的資源限制书聚,表示每個用戶進(jìn)程可以打開的最大文件描述符的數(shù)量唧领。
  • 設(shè)置方式:可以通過 ulimit -n [number] 命令設(shè)置,或者在用戶的 shell 啟動文件(如 ~/.bashrc)中配置雌续。
  • 作用范圍:適用于每個用戶和每個進(jìn)程斩个。每個用戶都可以有自己的限制,限制的值可以根據(jù)需要進(jìn)行調(diào)整驯杜。

2. fs.file-max 參數(shù)

  • 定義:fs.file-max 是一個系統(tǒng)級的參數(shù)受啥,表示系統(tǒng)可以同時打開的最大文件描述符的總數(shù)量。
  • 設(shè)置方式:可以通過 /etc/sysctl.conf 文件進(jìn)行配置鸽心,或使用 sysctl -w fs.file-max=[number] 命令動態(tài)設(shè)置滚局。
  • 作用范圍:適用于整個系統(tǒng),影響所有用戶和進(jìn)程顽频。

區(qū)別

  • 作用層級:nofile 是針對單個用戶或進(jìn)程的限制藤肢,而 fs.file-max 是針對整個系統(tǒng)的限制。
  • 設(shè)置方式:nofile 是通過 ulimit 設(shè)置的糯景,而 fs.file-max 是通過 sysctl 設(shè)置的嘁圈。

聯(lián)系

  • 相互關(guān)系:nofile 的值不能超過 fs.file-max 的值。如果 nofile 設(shè)置得過高蟀淮,可能會導(dǎo)致系統(tǒng)無法處理更多的文件描述符最住,從而觸發(fā)錯誤。
  • 性能監(jiān)控:監(jiān)控這兩個參數(shù)可以幫助系統(tǒng)管理員了解系統(tǒng)的文件描述符使用情況灭贷,并根據(jù)需要進(jìn)行調(diào)整温学。

示例

  • 查看當(dāng)前用戶的最大打開文件數(shù):
ulimit -n
  • 查看系統(tǒng)的最大文件描述符數(shù):
cat /proc/sys/fs/file-max
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末略贮,一起剝皮案震驚了整個濱河市甚疟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逃延,老刑警劉巖览妖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異揽祥,居然都是意外死亡讽膏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門拄丰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來府树,“玉大人,你說我怎么就攤上這事料按⊙傧溃” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵载矿,是天一觀的道長垄潮。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么弯洗? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任旅急,我火速辦了婚禮,結(jié)果婚禮上牡整,老公的妹妹穿的比我還像新娘藐吮。我一直安慰自己,他們只是感情好逃贝,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布炎码。 她就那樣靜靜地躺著,像睡著了一般秋泳。 火紅的嫁衣襯著肌膚如雪潦闲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天迫皱,我揣著相機(jī)與錄音歉闰,去河邊找鬼。 笑死卓起,一個胖子當(dāng)著我的面吹牛和敬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戏阅,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼昼弟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奕筐?” 一聲冷哼從身側(cè)響起舱痘,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎离赫,沒想到半個月后芭逝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡渊胸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年旬盯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翎猛。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡胖翰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出切厘,到底是詐尸還是另有隱情萨咳,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布迂卢,位于F島的核電站某弦,受9級特大地震影響桐汤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜靶壮,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一怔毛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腾降,春花似錦拣度、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奸晴,卻和暖如春冤馏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寄啼。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工逮光, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人墩划。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓涕刚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乙帮。 傳聞我的和親對象是個殘疾皇子杜漠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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