Linux

ulimit -n 和 /proc/sys/fs/file-max 有何不同?

  • September 22, 2017

我注意到在我剛剛從 EC2 啟動的新 CentOS 映像上,ulimit 預設為 1024 個打開文件,但 /proc/sys/fs/file-max 設置為 761,408,我想知道這兩個限制是如何工作的一起。我猜 ulimit -n 是每個使用者對文件描述符數量的限制,而 /proc/sys/fs/file-max 是系統範圍的?如果是這種情況,假設我以同一個使用者身份登錄了兩次——每個登錄使用者的打開文件數是否有 1024 個限制,或者每個登錄的使用者之間是否有 1024 個組合打開文件的限制——在使用者中?

如果您的系統從未打開過很多文件,那麼將您的最大文件描述符設置為一個非常高的數字是否會對性能產生很大影響?

file-max是在核心級別強制執行的最大文件描述符 (FD),如果不增加,所有程序都無法超過。是在程序級別上強制執行的ulimit,可以小於file-max.

增加 沒有性能影響風險file-max。現代發行版的最大 FD 設置相當高,而在過去它需要核心重新編譯和修改以增加超過 1024。除非您有技術需要,否則我不會增加系統範圍。

每個程序的配置通常需要調整以服務於特定的守護程序,無論它是數據庫還是 Web 伺服器。如果您完全取消限制,該守護程序可能會耗盡所有可用的系統資源;這意味著您將無法解決問題,除非按下重置按鈕或重啟電源。當然,其中任何一個都可能導致任何打開的文件損壞。

引用自:https://serverfault.com/questions/122679