linux用户打开文件最大数

今日遇到产品中报错[Too many open files],相关知识如下。

查看系统允许打开的最大文件数

#cat /proc/sys/fs/file-max

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

ulimit -a

发现系统默认的是open files (-n) 1024,问题就出现在这里。

在系统文件/etc/security/limits.conf中修改这个数量限制,

在文件中加入内容:

* soft nofile 65536 
* hard nofile 65536

1.使用ps -ef |grep java   (java代表你程序,查看你程序进程) 查看你的进程ID,记录ID号,假设进程ID为12
2.使用:lsof -p 12 | wc -l    查看当前进程id为12的 文件操作状况
    执行该命令出现文件使用情况为 1052
3.使用命令:
ulimit -a    查看每个用户允许打开的最大文件数
    发现系统默认的是open files (-n) 1024,问题就出现在这里。
4.然后执行:ulimit -n 4096

     将open files (-n) 1024 设置成open files (-n) 4096

这样就增大了用户允许打开的最大文件数,每个ssh连上的用户的设置ulimit是互不干扰的。

现在我们产品的解决办法是在启动脚本sh里加入ulimit -n 65535

当然这仅是在必要的时候,一般情况下还要先检查一下文件流的关闭情况。

你可能感兴趣的:(linux用户打开文件最大数)