【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:313434

评论

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

Docker可视化管理工具Portainer

xcbeyond

Docker Portainer 8月日更

流处理基本概念(二)

数据与智能

大数据 flink 窗口函数

喜获蚂蚁金服、拼多多、字节跳动offer!纠结之后入职拼多多。

Java 编程 程序员 面试 计算机

2021年最新最全:30W字!千道Java 后端面试大全(值得收藏)

Java 编程 程序员 架构 面试

【前端 · 面试 】HTTP 总结(七)—— HTTP 缓存概述

编程三昧

面试 HTTP 8月日更 HTTP缓存

Tensorflow随笔(一)

毛显新

人工智能 深度学习 tensorflow keras

ipfs挖矿怎么选择公司?ipfs挖矿收益怎么计算?

IPFS挖矿收益怎么计算 ipfs挖矿怎么选择公司

总结

杨彬

#架构实战营

期末设计

Geek_9cf7b5

毕业设计电商秒杀系统

梦寐凯旋

#架构实战营

13年培训出身!八年后成功坐上了阿里P7架构师的位置

Java 编程 程序员 架构 计算机

看完必让你直呼好家伙!阿里巴巴 6 月新作:“Java架构手册”

Java 编程 程序员 IT 计算机

架构师实战营模块四作业

袁小芬

白手起家之搜索利器Elastic search

卢卡多多

ES 8月日更

年薪50W阿里P7架构师就会点这?并发丨JVM丨多线程丨Netty丨MySQL!

编程 架构 面试 IT 计算机

三十多岁跳槽无路,晋升无门,濒临绝望之际受贵人指点,成功上岸阿里(Java 岗)

Java 编程 程序员 架构 计算机

趁着课余时间学点Python(六)终止循环,阻断循环

ベ布小禅

8月日更

【架构实战营】毕业总结

swordman

架构实战营

云原生之可观测性【日志篇】 Logstash组件初探

路上的小崔哥

云原生 Logstash 日志 可观测性

我能行我能行!字节三面 + 微信四面 +PayPal 四面, 大厂面经分享

Java 编程 程序员 架构 IT

架构训练营毕业总结

冬天的树

一周拿下百度Offer!211本+985硕+计算机专业~

Java 编程 面试 IT 计算机

数字化加速碳基文明向硅基文明的演进

Taylor

数字化 数字孪生 碳基文明 硅基文明

我找遍了全网,总结出足足60W字“阿里大厂面试手册”

Java 程序员 IT 计算机 知识分享

Tensorflow随笔(二)

毛显新

人工智能 深度学习 tensorflow keras

前端之数据结构(四)

Augus

数据结构 8月日更

架构设计能力提升

arctec

Tensorflow API(一)

毛显新

人工智能 深度学习 tensorflow keras

Java进程cpu100%问题排查

陈皮的JavaLib

Java Linux 面试 8月日更

模块10作业

杨彬

#架构实战营

SLO(服务等级目标)与SLA(服务等级协议)

一个大红包

8月日更

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