如何更改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
。 这不需要服务器重新启动。