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

我的实际限制是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 

即使在运行sysctl -p重新加载设置和/或重新启动Ubuntu 16.04和CentOS 6上也没有成功。

它始终保持为1024


这个问题是另一个问题的延伸。

对于Ubuntu 17.04。 看到这个解决方案

在Ubuntu 17.04之前:

我不知道为什么上面的设置不起作用,但看起来你可以通过使用/etc/security/limits.conf文件得到相同的结果。

/etc/security/limits.conf设置限制

 sudo bash -c "echo '* - nofile 10240' >> /etc/security/limits.conf" 
  • *表示所有用户。 您可以用特定的用户名替换它。
  • -意味着softhard 的限制类型的执行 。 硬只能由超级用户修改。 软可以由非root用户修改,不能优于硬。
  • nofile打开文件最大数量参数。
  • 10240是新的限制。

刷新

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

你可以检查新的限制:

 ulimit -n 

在Ubuntu 16.04和CentOS 6上测试。受这个答案的启发。