如何更改Linux中打开的文件数量限制?

当运行我的应用程序时,我有时会得到关于too many files open的错误。

运行ulimit -a报告限制为1024.如何增加1024以上的限制?

编辑 ulimit -n 2048导致权限错误。

你总是可以尝试做一个ulimit -n 2048 。 这将只会重置当前shell的限制,并且您指定的数量不得超过硬限制

每个操作系统在配置文件中都有不同的硬限制设置。 例如,Solaris上的硬开放文件限制可以在/ etc / system中设置。

 set rlim_fd_max = 166384 set rlim_fd_cur = 8192 

在OS X上,必须在/etc/sysctl.conf中设置相同的数据。

 kern.maxfilesperproc=166384 kern.maxfiles=8192 

在Linux下,这些设置通常在/etc/security/limits.conf中。

有两种限制:

  • 限制就是目前强制执行的限制
  • 通过设置软限制限制标记不能超过的最大值

软限制可以由任何用户设置,而硬限制只能由根来改变。 限制是一个过程的属性。 它们在创建子进程时被继承,所以在初始化脚本的系统初始化期间应该设置系统范围的限制,并且在用户登录期间应当设置用户限制,例如使用pam_limits。

机器引导时通常会设置默认值。 因此,即使您可能会在单个shell中重置您的ulimit,也可能会发现重新启动时会重置为以前的值。 如果您想更改默认值,您可能需要为存在ulimit命令grep引导脚本。

如果您使用的是Linux并且出现许可权限错误,则需要在/etc/limits.conf/etc/security/limits.conf文件中提供允许的限制(文件所在的位置取决于您的特定Linux发行版)。

例如,要允许机器上的任何人将其打开文件的数量提高到10000,请将该行添加到limits.conf文件中。

* hard nofile 10000

然后注销并重新登录到你的系统,你应该能够做到:

ulimit -n 10000

没有权限错误。

1) /etc/security/limits.conf下行添加到/etc/security/limits.conf

 webuser hard nofile 64000 

然后以web用户身份登录

 su - webuser 

2)为webuser编辑以下两个文件

通过运行追加.bashrc和.bash_profile文件

 echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile 

3)注销,然后重新登录并验证更改是否正确:

 $ ulimit -a | grep open open files (-n) 64000 

那是它和他们的繁荣,繁荣的热潮。

如果你的某些服务正在虚化,那么把适当的命令放到服务的init脚本中有时候会更容易一些。 例如,当Apache正在报告

[alert](11)资源暂时不可用:apr_thread_create:无法创建工作线程

尝试把ulimit -s unlimited放到/etc/init.d/httpd 。 这不需要服务器重新启动。