首页 > 其他分享 >解决系统too many open files

解决系统too many open files

时间:2024-06-08 22:45:11浏览次数:12  
标签:files 文件 many nofile 描述符 too conf nr open

.背景

  • nofile不足引起的too many open files故障报警频繁出现

2.文件描述符的定义与功能

  • 文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。
当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。
  • 简单来说,在Linux 系统中,一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,
文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。

3.file-max nr_open nofile 参数之间关系

配置参数 级别 配置含义 配置路径
fs.file-max 系统级别 当前系统可打开最大文件描述符的数量 /etc/sysctl.conf
fs.nr_open 进程级别(不可按用户细化配置) 单个进程可打开最大文件描述符的数量 /etc/sysctl.conf
hard nofile 进程级别(可以按照用户细化配置) 单个进程可打开最大文件描述符的数量, 强限制,该值需要始终保持大于等于soft。 /etc/security/limits.conf
soft nofile 进程级别(可以按照用户细化配置) 单个进程可打开最大文件描述符的数量, 软限制,该值需要始终保持小于等于hard。 /etc/security/limits.conf
  结论: 1、file-max ≥ nr_open ≥ hart nofile ≥ sofe nofile,如果是root用户不受限于file-max,但是 2、nofile 和 fs.nr_open 都是限制的单个进程的最大文件数量。二者区别是/etc/security/limits.conf 中的nofile可以继续按照用户维度进行细化配置,而 fs.nr_open 则只能针对所有用户。 3、nofile soft 需要小于等于nofile hard, 4、内存和nofile存在一定的线性关系,早期内存很小,所以nofile配置1024,现在内存配置都很高,完全足够支持很大量级的打开文件数,倘若系统真的出现瓶颈,首当其冲的也会是其他资源类型,所以为了方便管理,可以将file-max 、nr_open、hard nofile 、soft nofile都配置成一个较高的值,如需调整,也均一起保持相同数值统一调整。 ⚠️注意:修改完所有配置之后,只对新启动的进程生效,修改配置之前的进程不生效,需要重启进程才能使用新的配置!!

4.常用命令

4.1.查看nofile # 查看当前系统的最大打开文件数 $ cat /proc/sys/fs/file-max 1024000 # 查看一个进程最大打开文件数,该文件是只读权限,此值实际来源于/etc/sysctl.conf,如果未定义,则该值默认为1048576, 如果在sysctl.conf重新定义该值并通过sysctl -p生效后,可以通过cat /proc/sys/fs/nr_open查看最新值。 $ cat /proc/sys/fs/nr_open 1048576 # 查看当前系统已经打开的句柄 # 输出三列信息,第一列代表全局已经分配的文件描述符数量,第二列代表已分配未使用的文件描述符,第三列代表系统总的文件描述符的数量。 $ cat /proc/sys/fs/file-nr 2176 0 1024000 #统计进程pid与文件句柄数的关系 $ lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr # 统计各用户打开句柄数 $ lsof -n|awk '{print $3}'|sort|uniq -c|sort -nr # 统计各命令打开句柄数 $ lsof -n|awk '{print $1}'|sort|uniq -c|sort -nr 4.2.修改nofile # 永久设置file-max和nr_open,sysctl.conf需要root权限才能修改。 $ sudo -i $ vim /etc/sysctl.conf fs.file-max = 1024000 fs.nr_open= 1024000 $ sysctl -p # 永久设置soft ,hard nofile # *代表所有用户,也可以针对其他普通用户做配置 $ vim /etc/security/limits.conf * soft nofile 1024000 * hard nofile 1024000 # 临时设置soft ,hard nofile $ ulimit -S 1024000 <iframe style="display: none !important"></iframe>

标签:files,文件,many,nofile,描述符,too,conf,nr,open
From: https://www.cnblogs.com/hoganhome/p/18239047

相关文章

  • 树莓派 linux安装PyBlueZ报错:fatal error: bluetooth/bluetooth.h: No such file or d
    IwanttobuildacfilebasedonBlueZbutseemsnobluetooth.hfileinmysystem.fatalerror:bluetooth/bluetooth.h:NosuchfileordirectoryIamsurethebluetoothdongleisrunningcorrectlyandIhavebuiltBluezsuccessfully.UpdateFormyca......
  • tools maven引入 maven tools.jar
    怎么用javadoc和Doclet配合解析自己想要的注释(链接)。既然是一个工具,自然就要生成可执行的jar包。这貌似是一个很合理的要求,然后坑就来了。我上篇说的是直接复制的tool.jar到lib包下面,添加进资源包就可以了,但是maven项目肯定不能这样做的,这样不规范。我在网上去搜索了tools.jar的......
  • Kibana的Dev Tools中创建自定义分词器
    1.登录Kibana并打开DevTools2.编写并发送PUT请求来创建索引映射和分词器在DevTools的编辑器中,编写一个PUT请求来创建索引,并在其映射(mapping)中定义你的自定义分词器。以下是一个示例请求#创建了一个名为my_index的索引,并在其设置(settings)中定义了一个名为my_custom_analyz......
  • IT-Tools.Tech: 助力开发人员和IT工作者!
    IT-Tools.Tech:为开发者提供便捷的在线工具it-tools.techIT-Tools.Tech[1] 是一个专为开发者设计的在线工具平台,提供了多种实用的开发工具,帮助简化工作流程,提高工作效率。平台上的工具涵盖了从文本处理、编码解码到图像处理等多方面需求,满足不同开发任务的要求。主要特点:......
  • Wesky.Net.Opentools库
    使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串 合集-OpenTools(5) 1..NET使用P/Invoke来实现注册表的增、删、改、查功能05-142..NET实现获取NTP服务器时间并同步(附带Windows系统启用NTP服务功能)05-153.工业福利!用.NET快速开发物联网扫码......
  • 使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串
    安装1.0.10以及以上版本的Wesky.Net.OpenTools包 包内,该功能的核心代码如下:自定义属性:实体类JSON模式生成器: 使用方式:引用上面的1.0.10版本或以上的包。如果实体类有特殊需求,例如映射为其他名称,可以用OpenJson属性来实现。实体类对象案例如下:上面实体类,提供了属性......
  • Element Plus el-tooltip嵌套el-popover
    1.场景需求在按钮中鼠标移入显示Tooltip文字提示,点击显示Popover提示框2.实现el-tooltip与el-popover之间需要有一层dom元素<template><el-tooltipeffect="dark":show-after="500"content="功能开发"placement="right"><spanref="dom&qu......
  • AI大模型探索之路-实战篇15: Agent智能数据分析平台之整合封装Tools和Memory功能代码
    系列篇章......
  • cuda-toolkit 设置环境变量 CUDA_FORCE_ PTX_JIT的作用
    设置环境变量CUDA_FORCE_PTX_JIT的作用是控制NVIDIACUDA运行时是否强制使用PTX即时编译(Just-In-Timecompilation)。当这个环境变量被设置时,它会对CUDA程序的行为产生以下影响:禁用二进制缓存加载:正常情况下,CUDA运行时会尝试从二进制缓存中加载预先编译好的cubin(CUDA二进制)文......
  • ubuntu 解决apt-get: Some index files failed to download. They have been ignored,
    很多博主都有编写把resolve.config文件里的conserve改为8.8.8.8,但还有一种可能是没有用最新的镜像源网址,导致找不到文件,推荐找一些最近的含有镜像源的帖子。另外就是连过外网之后导致板子和环境的网域不一样,都有可能。一般把这三种方法试了之后都是可以解决问题的。镜像源没有......