歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux上修改open files數目

Linux上修改open files數目

日期:2017/2/28 14:46:15   编辑:Linux教程

Linux系統上默認的open files數目為1024, 有時應用程序會報Too many open files的錯誤,是因為open files 數目不夠。

用 ulimit -a 命令可以查看 系統對各種參數的限制;

# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 257648
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
由上面可以知道 open files 當前限制為 4096,ok,我們可以修改稍微大一點;
當你把open files的值增大到一定程度,你的Too many open files就不會再出現了。

修改方法:
(1)ulimit -HSn 102400
這只是在當前終端有效,退出之後,open files 又變為默認值。
(2)將ulimit -HSn 102400寫到/etc/profile中,因為每次登錄終端時,都會自動執行/etc/profile。
(3)令修改open files的數值永久生效,則必須修改配置文件:/etc/security/limits.conf. 在這個文件後加上:
* soft nofile 102400
* hard nofile 102400
這種方法需要重啟機器才能生效。
(4)為了讓一個程序的open files數目擴大,可以在啟動腳本前面加上(1)中的命令。當程序是一個daemon時,可能這種方法無效,沒有終端了。

影響open files數值的還有一個內核參數file-max,這是Linuxt系統的總限制。可以通過如下文式查看:
cat /proc/sys/fs/file-max
或者
sysctl -a | grep fs.file-max

對於服務器可以采用如下方法修改file-max:
(1)重啟機器後恢復為默認值
echo 34166 > /proc/sys/fs/file-max
或者
sysctl -w "fs.file-max=34166"
(2)修改配置文件/etc/sysctl.conf, 在最後加上一行:
fs.file-max = 34166
然後sysctl -p 生效 或者 重啟機器以後永久生效。

推薦閱讀:

Linux系統文件查找命令find的基本使用及其高級用法 http://www.linuxidc.com/Linux/2013-05/84991.htm

Copyright © Linux教程網 All Rights Reserved