文件句柄

tips:

网上说什么的也有,你抄我的我抄你的,也是醉了,故自己综合查阅的资料,根据自己的理解和判断以及部分的实践整理下吧,也不敢保证都是对的,如果有比较大的错误,希望看到这篇文章的你提出来,大家共同进步!

关于什么是文件句柄,这里不做讨论,其实linux中没有文件句柄,叫做文件描述符fd

超过最大句柄限制,报错:java.io.IOException: Too many open files。

TCP连接也会消耗句柄

查看

用户级别(nofile)
ulimit -n 当前用户的当前session(即当前shell窗口)最大限制 (如果多个shell窗口,每个都能到达最大限制,和单个进程无关)

单个进程级别(nr_open )
cat /proc/sys/fs/nr_open linux系统中规定每个进程最大限制

系统级别(file-max)
cat /proc/sys/fs/file-max 系统级别最大限制(所有进程打开的不能超过)

下面的可简单看,可忽略
cat /proc/sys/fs/file-nr 当前系统已经占用的句柄

[root@izm3mkp4g43hdqz ~]# cat /proc/sys/fs/file-nr
1952    0       184294

结果说明:第一个数表示当前系统已分配的文件描述符数(文件句柄数),第二个数为分配后已释放的文件描述符数(当前不再使用的文件描述符数),第三个数为最大文件描述符数,等于file-max。

lsof -n |grep 1549 -c

某个进程已经占用的句柄

修改

用户级别(nofile)

  • 临时生效(重启失效) : ulimit -n 65535

    修改当前的用户级别的,但是生效范围是当前的session(即当前的shell窗口),即关掉这个窗口,再次打开就不生效了。

  • 永久生效

    如何每次都生效?
    修改环境变量 将 ulimit -n 65535 加入到 /etc/profile 文件,并source/etc/profile使生效,其实是障眼法,相当于每个用户进来执行一次ulimit -n 65535这个命令

如何更好的每次都生效(推荐)?
修改/etc/security/limits.conf文件

* soft nofile 32768 #限制单个进程最大文件句柄数(到达此限制时系统报警)
* hard nofile 65536 #限制单个进程最大文件句柄数(到达此限制时系统报错)
//* 是所有用户的意思 ,也可以改成  xiaoming soft nofile 32768 就是针对于小明用户的

ulimit -Sn 能查看或设置soft limit ulimit -Hn能查看或设置hard limit

ulimit -n默认查看的是soft limit
soft limit不能大于hard limit

单个进程级别(nr_open )

cat /proc/sys/fs/nr_open能够查看单个进程级别的
hard limit一定不能大于/proc/sys/fs/nr_open,否则用户注销后无法正常登录。

为什么不能大于?我是这么理解的:当前用户想要操作这个进程的最大文件数,但是你再大也不能超过系统级别的单个进程的限制,即nr_open
如果想要大于怎么办?那就提前修改nr_open的值:

  • 临时生效(重启失效) :
    echo 2000000 > /proc/sys/fs/nr_open

  • 永久生效:
    sysctl -w fs.nr_open=100000000 或者 直接写入sysctl.conf文件

    fs.nr_open=100000000

运行命令:/sbin/sysctl -p 使配置生效

系统级别(file-max)

  • 临时生效(重启失效):

    echo 1000000 > /proc/sys/fs/file-max

  • 永久生效:

    修改文件/etc/sysctl.conf

    fs.file-max=655350 #限制整个系统最大文件句柄数

运行命令:/sbin/sysctl -p 使配置生效

总结

  • 大小顺序、关系

    用户级别<单个进程级别<系统级别 即 nofile>nr_file<file-max

    用户级别(nofile)中: safe limit<hard limit 而 hard limit <nr_file

    所以完整:
    safe limit<hard limit<nr_file<file-max

  • 误区

    用户级别(nofile)即,ulimit命令,只和当前用户当前session(当前shell窗口)有关,和单个进程没有关系

Linux文件句柄限制总结相关推荐

  1. linux文件句柄,【LINUX】使用lsof处理文件恢复、句柄以及空间释放问题

    曾经在生产上遇到过一个df 和 du出现的结果不一致的问题,为了排查到底是哪个进程占用了文件句柄,导致空间未释放,首先在linux上面,一切皆文件,这个问题可以使用lsof这个BT的命令来处理(这个哈 ...

  2. Linux文件句柄占用数量查看与设置

    安装lsof yum install lsof 查看线程占句柄数 ulimit -a 查看系统打开句柄最大数量 more /proc/sys/fs/file-max 1 查看打开句柄总数 lsof|a ...

  3. linux 文件句柄 sock,linux socket句柄

    CPU资源监控(-u,或-P ALL) 例如,每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中,需键入如下命令: sar -u -o te ...

  4. linux文件句柄上线的修改,修改Linux文件句柄限制

    1.  添加ulimit -HSn 655350   到/etc/profile 2. 配置生效  source /etc/profile 分类: LINUX 2010-09-08 00:06:51 ...

  5. Linux——文件句柄数设置

    在使用Linux时我们需要同时打开多个文件,来适配高并发的需求,这时就需要设置一下文件句柄数了,默认打开的是1024 文件句柄,文件描述符,会随着进程数增加而增加. Linux是有文件句柄限制的,而且 ...

  6. 什么是linux文件句柄,Linux中的“陈旧文件句柄”是什么意思?

    假设我有一个终端打开,通过该终端我已经cd到某个目录.通过另一个终端,我删除该目录并从相同的备份恢复它.当我尝试从第一个终端vim文件,在同一目录中,为什么我收到有关陈旧文件句柄的错误?这是什么意思? ...

  7. linux无效的文件句柄,Linux文件句柄限制分析

    引之: 在一个工作中的实践项目中,项目是一个部署到linux下的中间件项目,当收到一个Client登录的时候,需要为这个Client打开四个文件,当进行 多用户的大压力测试的时候,程序就出问题了: t ...

  8. linux文件句柄数满,linux文件句柄数超出系统限制怎么办?

    1.问题阐述: too many open files:顾名思义即打开过多文件数. 不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以 ...

  9. linux 端口数 句柄数,linux文件句柄数

    1.问题阐述:linux too many open files:顾名思义即打开过多文件数.shell 不过这里的files不单是文件的意思,也包括打开的通信连接(好比socket),正在监听的端口等 ...

最新文章

  1. 汇编语言---冒泡排序
  2. sklearn 岭回归
  3. python统计程序运行时间-如何方便地统计 Python 程序每一个函数、每一行代码执行所花的时间?...
  4. 浅谈飞鸽传书实现原理
  5. 拳王虚拟项目公社:虚拟资源自动化赚钱的原理是什么?真的靠谱吗?会不会骗人?
  6. 显示所有大写字母python_python 输出所有大小写字母, range()以及列表切片
  7. Python中的null对象?
  8. hdu 1166 树状数组解
  9. Python web爬虫
  10. 高效率实现web自动完成功能-三叉搜索树
  11. [arduino]-序言:面向仅有C语言基础之人的单片机开发板
  12. PMON 启动流程分析
  13. 在linux系统中使用shc指令,Linux编译安装SHC加密组件
  14. 山东大学校内网盘开发日志4-目前开发思路
  15. OC引导安装Mac Big Sur教程
  16. 端到端测试(e2e测试)
  17. 通信原理第6章节-数字基带传输系统
  18. MT4电脑版如何下载
  19. 导航和地图解决方案行业研究及十四五规划分析报告
  20. 软件测评师--第三小时 软件质量与评价

热门文章

  1. vue - blog开发学习5
  2. hdu 6852Path6(最短路+最小割)
  3. TensorFlow之tf.nn.dropout():防止模型训练过程中的过拟合问题
  4. IntelliJ IDEA常用的快捷键(代码提示/注释代码/加入类注释和方法注释Javadoc)
  5. 前端小课堂 js:what is the function?
  6. Hihocoder 小Hi小Ho扫雷作死一二三
  7. Mac os下安装brew
  8. android学习笔记46——File存储
  9. [算法 笔记]堆排序(续)
  10. 《你必须知道的261个java语言问题》读书报告——第二弹