无法使用sysctl更改每个进程的最大打开文件数

时间:2016-11-15 19:00:01

标签: linux centos6 ubuntu-16.04

我的实际限制为1024

$ 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) 95979
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

我试过了:

sysctl -w fs.file-max=100000

并附加到/etc/sysctl.conf

fs.file-max = 100000
即使在Ubuntu 16.04和CentOS 6上运行sysctl -p重新加载设置和/或重新启动之后,

也没有成功。

它始终设置为1024

此问题是other question

的扩展

2 个答案:

答案 0 :(得分:12)

对于Ubuntu 17.04。请参阅this solution

在Ubuntu 17.04之前:

我不知道上述设置为什么不起作用,但似乎您可以使用/etc/security/limits.conf file获得相同的结果。

/etc/security/limits.conf

中设置限制
sudo bash -c "echo '* - nofile 10240' >> /etc/security/limits.conf"
  • *表示所有用户。您可以使用特定的用户名替换它。
  • -表示type of limit to be enforcedsofthard。硬件只能由超级用户修改。 Soft可以由非root用户修改,并且不能优于hard。
  • nofile最大打开文件数参数。
  • 10240是新限制。

刷新

退出并重新登录。sudo sysctl -p似乎不足以重新加载。

您可以使用以下方法检查新限制:

ulimit -n

在Ubuntu 16.04和CentOS 6上测试。灵感来自answer

答案 1 :(得分:3)

对于MacOs 10.14.6及更高版本,如果需要暂时提高限制,则可以使用以下方法:

检查您当前的限制:

ulimit -n

我的年龄是256

更改它:

ulimit -n 1024

在同一标签中再次检查:

ulimit -n

我的现在显示1024。

更改是立即的,无需注销并再次登录,也无需打开新的“终端”选项卡。这解决了我的特殊问题。

不幸的是,更改是暂时的。稍后,当您打开一个新的终端窗口时,您会回到原来的值和问题上。