linux文件句柄数上限_怎么清除文件句柄

linux文件句柄数上限_怎么清除文件句柄文章目录查看修改查看cat/proc/sys/fs/nr_open每个进程最大限制ulimit-n当前用户的当前shell最大限制(多个shell,每个都能到达最大限制)cat/proc/sys/fs/file-max系统级别最大限制记住前三个就好了cat/proc/sys/fs/file-nr:[root@izm3mkp4g43hdqz~]#ca…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

文件句柄


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窗口)有关,和单个进程没有关系

参考

https://blog.csdn.net/gatieme/article/details/51058797?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2(最全)
https://www.iteye.com/blog/jameswxx-2096461(官网从来没有说过ulimit是限制用户的单个进程的最大文件数量,限制当前shell以及该shell启动的进程打开的文件数量)
https://blog.csdn.net/sunny05296/article/details/54952009(ulimit当前shell的当前用户的打开的最大限制,如果当前用户打开多个shell,则每个shell都能打开该最大值)
https://blog.csdn.net/kobejayandy/article/details/47128349(简明修改句柄)
https://blog.csdn.net/guoxilen/article/details/79401161(临时、永久修改句柄)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180966.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于java的外语文献_java英文参考文献(涵盖3年最新120个)

    关于java的外语文献_java英文参考文献(涵盖3年最新120个)近年来,随着我国科学的技术的飞速发展,计算机语言的内容和形式得到了极大的丰富,特别是java语言的广泛应用,它不仅是计算机语言的重要组成部分,同时也是我国程序编写的重要内容之一,java语言的出现和广泛使用,极大的丰富了人们的生产,生活,为人们的工作和学习提供了很大的便利.下面是搜素整理的java英文参考文献的分享,供大家借鉴参考。java英文参考文献一:[1]AbbasMrAnsar,Eli…

    2022年9月30日
  • 基于Scrapy的IP代理池搭建[通俗易懂]

    基于Scrapy的IP代理池搭建[通俗易懂]目录一、为什么要搭建爬虫代理池二、搭建思路三、搭建代理池items.pykuai_proxy.pymiddlewares.pypipelines.pysettings.pyutils.py一、为什么要搭建爬虫代理池在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制,即在某一时间段内,当某个ip的访问次数达到一定的阀值时,该ip就会被拉黑、在一段时…

    2022年5月1日
  • 为什么从Java开发转测试?

    为什么从Java开发转测试?前言很多粉丝关注我可能是从乐优商城项目关注的,这确实是我曝光度最高的一篇blog了包括现在新增的粉丝的话也是从乐优商城项目blog关注的ps:大家有询问我要源码,我以前是有上传到github上的,但是由于里面用到了阿里云,github天天给我发邮件报警说有风险,然后我就删除了,所以源码的话,现在是没有了的但是我觉得乐优商城过于大,用的技术栈也很多,如果面试的时候不能充分讲明白的话,尽量不要用这个项目去面试大家如果要用他面试的话可以从以下几个思路去讲1、整体是一个什么项目?主体业务流程是什么

    2022年7月16日
  • 【奇葩bug】微信小程序:Unit8Array is not defined[通俗易懂]

    【奇葩bug】微信小程序:Unit8Array is not defined[通俗易懂]【奇葩bug】微信小程序:Unit8Arrayisnotdefined在用微信小程序里的蓝牙模块,要给设备写入信息。结果报错:VM22:2MiniProgramErrorUnit8ArrayisnotdefinedReferenceError:Unit8Arrayisnotdefined报错原因:正确拼写是Uint8Array…难怪根本搜不到相关问题,幻视误人啊。(完全没有技术含量的bug,也没有耽误太多时间,但实在是让我感到哭笑不得……另外,关于ArrayBuffer

    2022年9月2日
  • Authentication failure. Retrying – 彻底解决vagrant up时警告

    Authentication failure. Retrying – 彻底解决vagrant up时警告

    2022年2月9日
  • 凯福德金业(香港)荣获“最佳贵金属交易平台”大奖

    凯福德金业(香港)荣获“最佳贵金属交易平台”大奖凯福德金业(香港)荣获“最佳贵金属交易平台”大奖 “2013年度第二届资本力量百强榜评选”中,凯福德金业凭借其在推动贵金属行业发展中作出的努力与贡献,成功入选“2013资本力量百强”并被授予“最佳贵金属交易平台”大奖。2014年2月,证券之星2013年第二届“资本力量百强榜颁布盛典”在上海如期举行。此次评选由中国著名财经资讯网站证券之星主办,联合复旦大学管理学院、证监会、上市公司联合会、逾

    2022年6月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号