写点什么

Too many open files 的四种解决办法

  • 2020-02-17
  • 本文字数:1419 字

    阅读完需:约 5 分钟

Too many open files的四种解决办法

【摘要】 Too many open files 有四种可能:一 单个进程打开文件句柄数过多,二 操作系统打开的文件句柄数过多,三 systemd 对该进程进行了限制,四 inotify 达到上限.


领导见了孔乙己,也每每这样问他,引人发笑。孔乙己自己知道不能和他们谈天,便只好向我们新员工说话。有一回对我说道,“你定位过问题么?”我略略点一点头。他说,“定位过,……我便考你一考。Too many open files,怎样解决?”我想,考评垫底的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,“不能解决罢?……我教给你,记着!这些方法应该记着。将来做接口人的时候,定位问题要用。”我暗想我和接口人的等级还很远呢,而且我们领导也从不将问题定位记功;又好笑,又不耐烦,懒懒的答他道,“谁要你教,不是 ulimit 太小么?”孔乙己显出极高兴的样子,将两个指头的长指甲敲着白板,点头说,“对呀对呀!……Too many open files 有四种可能,你知道么?”我愈不耐烦了,努着嘴走远。孔乙己却像是没有看到,自顾自的在白板上画了起来。

一 单个进程打开文件句柄数过多

ulimit 中的 nofile 表示单进程可以打开的最大文件句柄数,可以通过 ulimit -a 查看,子进程默认继承父进程的限制(注意,是继承,不是共享,子进程和父进程打开的文件句柄数是单独算的)。


网上还有一种解读是 nofile 表示单用户可以打开的文件句柄数,因为他们在 limit.conf 中看到类似于“openstack soft nofile 65536”,便认为是 openstack 用户最多可以打开的文件句柄数。该解读是错误的,“openstack soft nofile 65536”表示的含义是当你执行"su - openstack"切换到 openstack 用户后,你创建的所有进程最大可以打开的文件句柄数是 65536。


要查看一个进程可以打开的文件句柄数,可以通过“cat /proc/<pid>/limits”查看。


要修改 ulimit 中的 nofile,可以通过修改/etc/security/limits.conf 文件,在其中加入类似“openstack soft nofile 65536”的语句来进行修改。修改完成后,可以通过“su - openstack”切换用户,或者重新登录,来使该配置生效。


要动态修改一个进程的限制,可以使用 prlimit 命令,具体用法为:“prlimit --pid ${pid} --nofile=102400:102400”。

二 操作系统打开的文件句柄数过多

整个操作系统可以打开的文件句柄数是有限的,受内核参数“fs.file-max”影响。


可以通过执行“echo 100000000 > /proc/sys/fs/file-max”命令来动态修改该值,也可以通过修改"/etc/sysctl.conf"文件来永久修改该值。

三 systemd 对该进程进行了限制

该场景仅针对被 systemd 管理的进程(也就是可以通过 systemctl 来控制的进程)生效,可以通过修改该进程的 service 文件(通常在/etc/systemd/system/目录下),在“[Service]”下面添加“LimitNOFILE=20480000”来实现,修改完成之后需要执行"systemctl daemon-reload"来使该配置生效。

四 inotify 达到上限

inotify 是 linux 提供的一种监控机制,可以监控文件系统的变化。该机制受到 2 个内核参数的影响:“fs.inotify.max_user_instances”和“fs.inotify.max_user_watches”,其中“fs.inotify.max_user_instances”表示每个用户最多可以创建的 inotify instances 数量上限,“fs.inotify.max_user_watches”表示么个用户同时可以添加的 watch 数目,当出现 too many open files 问题而上面三种方法都无法解决时,可以尝试通过修改这 2 个内核参数来生效。修改方法是修改"/etc/sysctl.conf"文件,并执行"sysctl -p"。


2020-02-17 11:314147

评论

发布
暂无评论
发现更多内容

文心一言 VS 讯飞星火 VS chatgpt (143)-- 算法导论12.1 3题

福大大架构师每日一题

福大大架构师每日一题

Sensei for Mac 苹果电脑 系统性能优化及清理工具

Rose

mac系统清理优化软件 Sensei破解版 Sensei中文版 Sensei Mac下载 破解软件

Walrus 0.4发布:单一配置、多态运行,体验下一代应用交付模型

SEAL安全

应用交付 运维工具 Walrus 企业号11月PK榜

Java项目启动时先加载某些方法可用于redis缓存预热

javaNice

Java

复古艺术效果照片编辑软件推荐: Chromatic Edges激活最新

mac大玩家j

Mac软件 图片编辑器 复古风图像处理工具

3DCAT为华东师大设计学院打造元宇宙数字虚拟学院

3DCAT实时渲染

元宇宙 实时云渲染 元宇宙解决方案

首届教师案例教学竞赛一等奖作品上线至和鲸社区,快来学习! Jing Nov 26, 2023 需 12 分钟阅读

ModelWhale

人才培养 数据科学 教学创新 中国商业统计学会 教学竞赛

和鲸ModelWhale平台与海光人工智能加速卡系列完成适配认证,夯实 AI 应用核心底座

ModelWhale

gpu 信创 算力 数据科学 海光

Chat AI教你如何追求富婆

Geek_ccdd7f

ChatGPT ChatGPT4

Python笔记一之excel的读取

Hunter熊

Python Excel xlsxwriter Python xlrd

多种 React 组件通信方式实践

南城FE

JavaScript 前端 React

深度盘点!10款最实用的组织架构图制作软件,你用过几款?

职场工具箱

软件推荐 组织架构图

水彩画制作工具 Watercolor Studio Pro 最新激活版

胖墩儿不胖y

Mac软件 绘画工具

必读文章2-如何度过职场新兵期

玄兴梦影

代码审核员要被 ChatGPT 干掉了?

极狐GitLab

DevOps MR openai ChatGPT

CADintosh X v8.8.6 2D CAD 程序 兼容 M1/M2 安装 mac 计算机辅助设计软件

Rose

mac软件下载 cad CADintosh X 8 二维CAD

重写equals后为什么要重写hashcode方法

javaNice

Java

必读文章1-你尽力了吗

玄兴梦影

如何在langchain中对大模型的输出进行格式化

程序那些事

程序那些事 LLM 大语言模型

苹果电脑macos:简单好用的视频修复软件分享

Rose

Mac视频修复 视频损坏怎么办 媒体修复软件 苹果破解软件下载

使用 Java 客户端通过 HTTPS 连接到 Easysearch

极限实验室

Java https easysearch

44页案例 | 数字化工厂解决方案助力中国制造2025

工赋开发者社区

学习笔记:如何做成一件事

老张

个人成长 学习笔记 做事

Tech Lead 要学会戴着镣铐跳舞

光毅

团队管理

SQL JOIN 子句:合并多个表中相关行的完整指南

小万哥

MySQL 数据库 程序员 sql 后端开发

idc服务器是什么意思?

Geek_f19a80

服务器

Swish for Mac触控板增强工具: 重新定义触控板操作

Rose

swish激活函数 Swish mac Mac触控板增强工具 mac破解软件下载

IntelliJ IDEA 遇到 JavaLaunchHelper 多种实现的解决方法

Rose

IntelliJ IDEA 2023破解 IntelliJ IDEA 2023最新 IntelliJ IDEA报错

一种LED驱动专用控制电路

芯动大师

干货丨5G+智慧工厂解决方案(附PPT)

工赋开发者社区

有没有类似HyperDock一样好用的窗口管理软件?

Rose

mac软件下载 苹果窗口管理软件 mac窗口增强工具 窗口整理工具合集

Too many open files的四种解决办法_服务革新_华为云开发者联盟_InfoQ精选文章