Too many open files 问题处理

某个简单的 python 服务,运行一段时间就崩溃。查看日志后发现有一个系统错误

OSError: Errno24 Too many open files

要理解这个问题,首先要理解什么是文件描述符,可以参考我的另一篇文章(Linux 系统文件描述符(File Descriptor)小白级介绍).

简言之,就是 linux 系统每个进程会维护一张文件描述符表,而这个表是有大小限制的,用来控制每个进程可以打开的最多文件描述符数量。

如果一个进程打开了过多的文件,当再次尝试打开文件时,就会因为系统限制,产生 “Too many open files” 的错误。

1. 解决思路

  1. 问题产生时(不是事前和事后,而是事中),查看当前进程打开了哪些文件描述符,结合程序逻辑分析是正常情况还是异常情况
  2. 正常情况:查看和修改文件描述符数量限制
  3. 异常情况:
    • 查看是否有未正确关闭的资源使用(文件、网络、数据库)
    • 是否代码异常导致过多的打开文件,例如循环中打开了过多的文件

1.1 如何查看当前进程打开的文件描述符信息

# 查看指定进程打开的文件描述符
lsof -p <pid>

# 统计打开的文件描述符数量
lsof -p <pid> | wc -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值