linux 打开文件数 too many open files解决方法

在运行某些命令或者 tomcat等服务器持续运行 一段时间后可能遇到   too many open files。


出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值。



查看每个用户最大允许打开文件数量

ulimit -a



其中 open files (-n) 8192 表示每个用户最大允许打开的文件数量是8192 。 默认是1024。1024很容易不够用。





查看当前系统打开的文件数量



lsof | wc -l  
watch "lsof | wc -l"  

lsof只能以root权限执行。

在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。




查看某一进程的打开文件数量



lsof -p pid | wc -l  
lsof -p 1234 | wc -l  






设置open files数值方法



ulimit -n 2048

这样就可以把当前用户的最大允许打开文件数量设置为2048了,但这种设置方法在重启后会还原为默认值。



ulimit -n命令非root用户只能设置到4096。

想要设置到8192需要sudo权限或者root用户。





永久设置方法

要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:

session required /lib/security/pam_limits.so



vim /etc/security/limits.conf  
在最后加入  
* soft nofile 4096  
* hard nofile 4096  

或者只加入


 * - nofile 8192

最前的 * 表示所有用户,可根据需要设置某一用户,例如
fdipzone soft nofile 8192  
fdipzone hard nofile 8192  


注意"nofile"项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用"-"字符设定, 则hard和soft设定会同时被设定。 


改完后注销一下就能生效。


如果是puty等工具远程登录的  重新登录就生效了。不需要重启。



linux limits.conf配置说明

先看这个文件的简介,有英文基础的应该明白这资源限制到底限制了什么!!

limits.conf的格式如下:
username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有soft,hard以及-,soft指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft的限制不能比hard限制高。用-就表明同时设置了soft和hard的值。

resource:
core - 限制内核文件的大小
date - 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多CPU时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目

要使limits.conf文件配置生效,必须要确保 pam_limits.so文件被加入到启动文件中。
查看 /etc/pam.d/login 文件中有:(没有就添加)
session required /lib/security/pam_limits.so
注意:
好多人设置了limitc.conf没有测试,测试后发现没有生效
原因大多数为:
32系统 session required /lib/security/pam_limits.so
64位系统 session required /lib64/security/pam_limits.so

















本文转自leonardos51CTO博客,原文链接:http://blog.51cto.com/leomars/1895489 ,如需转载请自行联系原作者





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值