查看完整版本: ulimit 應用 - 如何加大 Linux 系統的 open file 上限


99770 2018-10-18 15:35

ulimit 應用 - 如何加大 Linux 系統的 open file 上限

Linux系統默認open files數目為1024, 有時應用進程會報Too many open files的錯誤,是因為open files 數目不夠。這就需要修改ulimit和file-max。特別是提供大量靜態文檔訪問的web服務器,緩存服務器(如squid), 更要注意這個問題。<br><br>ulimit 是一個 shell(這裡使用的是 bash) 內置命令,可以通過 type ulimit 驗證。<br><br>-n 即表示查看或者設置 open file(s) 的限制,在 ulimit 中,每個限制都有兩種類型:<br><br>&nbsp; &nbsp; -S, soft limit, 軟限制,用戶可以上調軟限製到硬限制<br>&nbsp; &nbsp; -H, hard limit, 硬限制,非 root 用戶不能修改<br><br>如果沒有指明,則同時修改軟限制和硬限制。<br>修改 ulimit<br><br>修改分為臨時修改和永久修改,臨時修改只對當前 session 有效,登出和重啟後都恢復系統設置。<br><br>(A)臨時修改使用 ulimit 命令,以修改 open file 為例。<br><br># ulimit -n 1024000<br># ulimit -n<br>1024000<br><br>(B)永久修改需要修改 <font color="Blue">/etc/sysctl.conf </font>跟 <font color="Blue">/etc/security/limits.conf </font><br><br>通過一番搜索,發現 open file kernel 級別有 2 個配置,分別是:<br><br>fs.nr_open,進程級別<br>fs.file-max,系統級別<br><br>fs.nr_open 默認設置的上限是 1048576,所以用戶的 open file(s) 不可能超過這個上限。<br><br># sysctl -w fs.nr_open=10000000<br># ulimit -n 10000000<br># ulimit -n<br>10000000<br><br>修改後即可設置更大的 open file(s) 了。<br><br>1.修改file-max<br>同樣,對於 kernel 參數的修改,sysctl 命令修改的是當前運行時,如果需要永久修改, 則將配置添加到 /etc/sysctl.conf 中,例如:<br>[quote]<br># echo "fs.nr_open = 10000000" &gt;&gt; /etc/sysctl.conf<br># echo "fs.file-max = 11000000" &gt;&gt; /etc/sysctl.conf<br># sysctl -p<br>[/quote]<br>注意:fs.nr_open 總是應該小於等於 fs.file-max。<br><br>如果要查看當前打開的文件數,使用下面的命令:<br><br># sysctl fs.file-nr<br>fs.file-nr = 1760 0 11000000<br><br>不過,增大這些值意味著能夠打開更多的文件(在Linux 中,everything is file,包括socket),但是同時也意味著消耗更多的資源,所以基本上在物理機上才會遇到這種問題。<br><br>2.修改ulimit的open file,系統默認的ulimit對文檔打開數量的限制是1024<br>[quote]<div># <font color="Blue">vi /etc/security/limits.conf</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //加入以下配置,重啟即可生效</div>* soft nofile 10000000 <br>* hard nofile 10000000<br>[/quote]<br><div><br></div><div>這樣就可以囉~<br></div><div><br></div>參考資料:<br><a href="http://www.chengweiyang.cn/2015/11/14/how-to-enlarge-linux-open-files-upper-cell/" target="_blank">http://www.chengweiyang.cn/2015/11/14/how-to-enlarge-linux-open-files-upper-cell/</a>
頁: [1]
查看完整版本: ulimit 應用 - 如何加大 Linux 系統的 open file 上限