too many file open 问题解决

 前几天突然测试环境的项目突然不能用了,打开tomcat的log查看报错:

too many file open 

人话就是句柄不够用了,一般原因有两个:1.打开的应用过多超出了服务器限制 2.代码中有未关闭的连接,流之类的导致的socket泄露,需要排查。不过要程序能先跑起来,可以先增大句柄(file)数。

1.运行命令 ulimit -a可以看到

[root@centos-7 ~]# 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) 127979
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 127979
virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

标红的只有1024,增大一下吧。

2.vi /etc/pam.d/login

在文件中增加一行:

session required /lib/security/pam_limits.so

注:有这一行的不用增加了

3:vi /etc/security//limits.conf

文件中增加:

root soft nofile 655360
root hard nofile 655360
* soft nofile 655360

* hard nofile 655360

注:如果文件中有这四行,只修改末尾的数字即可。

4.关闭连接重新登录:运行一下ulimit -a 即可看到完成了修改。

注:另外可以根据进程查看是哪个进程泄露了socket: 

lsof -p pid|wc -l

查看系统总限制 命令:cat /proc/sys/fs/file-max

查看整个系统目前使用的文件句柄数量命令:cat /proc/sys/fs/file-nr

也可以看到某个目录 /文件被什么进程占用了,显示已打开该目录或文件的所有进程信息 :lsof path/filename

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值