我們已經了解到想要解決用戶出現“too many open files”的問題需要同時修改用戶級引數檔案limits.conf及系統級引數檔案sysctl.conf,那么怎么修改才合理呢?怎么修改才能萬無一失呢?文章開始我提到,在最初出現“too many open files”問題的時候,我們只是簡單粗暴的在nofile默認值和fs.file-max默認值后面加一個零甚至幾個零,為什么會出現有時能解決問題,有時又無濟于事的情況呢?我根據日常維護經驗總結出了引數值設定需要遵循的以下幾個原則:
? 1、根據limits.conf 中的soft nofile和hard nofile的定義:soft 指的是當前系統生效的設定值;hard 表明系統中所能設定的最大值,可以看出,soft nofile必須小于等于hard nofile值。
? 2、用戶級打開檔案數引數nofile必須小于等于系統級打開檔案數引數fs.file-max。目前X86平臺linux默認nofile為5000,fs.file-max為4096,在我們簡單粗暴的在nofile默認值后增加幾個零,一旦nofile值大于fs.file-max值時,打開檔案數仍然會以fs.file-max值為準,也就是4096,仍然小于應用程式所需要的打開檔案數,這就合理解釋了為什么已經擴大了nofile值卻仍然無法解決“too many open files”的問題了。
? 3、fs.file-max*4k必須小于記憶體(位元組數)。看到這個公式也許你會有些頭暈,那么我來拿4G記憶體來舉個簡單的例子。如一臺虛擬機記憶體為4G(4*1024*1024位元組),根據公式算出fs.file-max必須小于1024*1024,約100萬。也就是說拿一臺4G記憶體的虛擬機來說,fs.file-max值設定低于100萬是基于硬體條件下合理的數值;如果設定超出了100萬的值,那么相當于對系統打開檔案數無限制,沒有預警機制,當系統打開檔案數超過100萬個時,系統將會夯死。換句話說,如果在當前記憶體下允許的最大檔案打開數還是無法符合應用程式要求的話,只能使用增加記憶體的方式來提高性能了。
? 4、nofile最大值不可設定大于102萬,大于102萬的話會造成用戶無法登陸。這個原則來自資深紅帽系統工程師的口述,大家記住就好了。
uj5u.com熱心網友回復:
good.......uj5u.com熱心網友回復:
Thank you so much !uj5u.com熱心網友回復:
轉載分享轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/78976.html
標籤:系統維護與使用區
上一篇:Ubuntu 安裝報錯
下一篇:kali
