Linux文件句柄限制总结
文件句柄
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文件句柄限制总结相关推荐
- linux文件句柄,【LINUX】使用lsof处理文件恢复、句柄以及空间释放问题
曾经在生产上遇到过一个df 和 du出现的结果不一致的问题,为了排查到底是哪个进程占用了文件句柄,导致空间未释放,首先在linux上面,一切皆文件,这个问题可以使用lsof这个BT的命令来处理(这个哈 ...
- Linux文件句柄占用数量查看与设置
安装lsof yum install lsof 查看线程占句柄数 ulimit -a 查看系统打开句柄最大数量 more /proc/sys/fs/file-max 1 查看打开句柄总数 lsof|a ...
- linux 文件句柄 sock,linux socket句柄
CPU资源监控(-u,或-P ALL) 例如,每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中,需键入如下命令: sar -u -o te ...
- linux文件句柄上线的修改,修改Linux文件句柄限制
1. 添加ulimit -HSn 655350 到/etc/profile 2. 配置生效 source /etc/profile 分类: LINUX 2010-09-08 00:06:51 ...
- Linux——文件句柄数设置
在使用Linux时我们需要同时打开多个文件,来适配高并发的需求,这时就需要设置一下文件句柄数了,默认打开的是1024 文件句柄,文件描述符,会随着进程数增加而增加. Linux是有文件句柄限制的,而且 ...
- 什么是linux文件句柄,Linux中的“陈旧文件句柄”是什么意思?
假设我有一个终端打开,通过该终端我已经cd到某个目录.通过另一个终端,我删除该目录并从相同的备份恢复它.当我尝试从第一个终端vim文件,在同一目录中,为什么我收到有关陈旧文件句柄的错误?这是什么意思? ...
- linux无效的文件句柄,Linux文件句柄限制分析
引之: 在一个工作中的实践项目中,项目是一个部署到linux下的中间件项目,当收到一个Client登录的时候,需要为这个Client打开四个文件,当进行 多用户的大压力测试的时候,程序就出问题了: t ...
- linux文件句柄数满,linux文件句柄数超出系统限制怎么办?
1.问题阐述: too many open files:顾名思义即打开过多文件数. 不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以 ...
- linux 端口数 句柄数,linux文件句柄数
1.问题阐述:linux too many open files:顾名思义即打开过多文件数.shell 不过这里的files不单是文件的意思,也包括打开的通信连接(好比socket),正在监听的端口等 ...
最新文章
- 汇编语言---冒泡排序
- sklearn 岭回归
- python统计程序运行时间-如何方便地统计 Python 程序每一个函数、每一行代码执行所花的时间?...
- 浅谈飞鸽传书实现原理
- 拳王虚拟项目公社:虚拟资源自动化赚钱的原理是什么?真的靠谱吗?会不会骗人?
- 显示所有大写字母python_python 输出所有大小写字母, range()以及列表切片
- Python中的null对象?
- hdu 1166 树状数组解
- Python web爬虫
- 高效率实现web自动完成功能-三叉搜索树
- [arduino]-序言:面向仅有C语言基础之人的单片机开发板
- PMON 启动流程分析
- 在linux系统中使用shc指令,Linux编译安装SHC加密组件
- 山东大学校内网盘开发日志4-目前开发思路
- OC引导安装Mac Big Sur教程
- 端到端测试(e2e测试)
- 通信原理第6章节-数字基带传输系统
- MT4电脑版如何下载
- 导航和地图解决方案行业研究及十四五规划分析报告
- 软件测评师--第三小时 软件质量与评价
热门文章
- vue - blog开发学习5
- hdu 6852Path6(最短路+最小割)
- TensorFlow之tf.nn.dropout():防止模型训练过程中的过拟合问题
- IntelliJ IDEA常用的快捷键(代码提示/注释代码/加入类注释和方法注释Javadoc)
- 前端小课堂 js:what is the function?
- Hihocoder 小Hi小Ho扫雷作死一二三
- Mac os下安装brew
- android学习笔记46——File存储
- [算法 笔记]堆排序(续)
- 《你必须知道的261个java语言问题》读书报告——第二弹