linux:Too Many Open Files(打开的文件过多)
前言
- linux RH7
- ulimit命令
- lsof命令
- /proc/{pid}/limits
- 了解linux:系统对open files的限制
今天发现某个程序发生了Too Many Open Files(打开的文件过多)错误。该程序的PID为4837。下面为检查过程。
检查系统对单个进程文件句柄的限制
用ulimit -n
命令查询:
> ulimit -n65535
或用ulimit -a
命令查询open files:
> ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 255796
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 255796
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
检查发生Too Many Open Files的进程的Max open files
每个进程均会有对应的Max open files设置,用到的命令:
cat /proc/{pid}/limits |grep 'Max open files'
检查结果:
> cat /proc/4837/limits |grep 'Max open files'
Max open files 4096 4096 files
或:
> cat /proc/4837/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 255796 255796 processes
Max open files 4096 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 255796 255796 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
进程使用了多少文件句柄
用到的命令:
> lsof -p pid | wc -l
检查结果:
> lsof -p 4837 | wc -l
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfsOutput information may be incomplete.
4169
至此,发现了问题:ulimit查询到最大open files数量是65535, /proc/4837/limits查询到Max open files数量是4096,lsof查询到的打开文件数量4169。显然进程4837打开文件数量超过了/proc/4837/limits中的限制。
至于lsof查询到的打开文件数量是4169而不是4096,这个还没搞清楚。
查pid
> ps -ef | grep java
linux:Too Many Open Files(打开的文件过多)相关推荐
- too many open files(打开的文件过多)解决方法
too many open files(打开的文件过多)解决方法 参考文章: (1)too many open files(打开的文件过多)解决方法 (2)https://www.cnblogs.co ...
- Tomcat9.0.13 Bug引发的java.io.IOException:(打开的文件过多 Too many open files)导致服务假死...
问题背景: 笔者所在的项目组最近把生产环境Tomcat迁移到Linux,算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求 ...
- Linux 下从命令行打开pdf文件和html文件的命令
Linux 下从命令行打开pdf文件和html文件的命令 [日期:2012-06-18] 来源:Linux社区 作者:hipercomer [字体:大 中 小] 如果你经常工作在Linux终端下,某个 ...
- 【问题分析】打开的文件过多
[问题分析]打开的文件过多 背景 问题分析 测试 解决 背景 系统上线运行一段时间之后突然崩溃,重启后正常运行,过一段时间后再次崩溃.查看系统日志发现,原因是open too many files,打 ...
- java报文件打开数过多_Tomcat报java.io.IOException: 打开的文件过多
今天后台服务器(Linux)tomcat应用报java.io.IOException: Too many open files 在网上查了一些资料 记录如下: 打开的文件过多,一般来说是由于应用程序对 ...
- Error:KafkaStorageException打开的文件过多
问题描述,在Flink集群大数据处理过程中,向Kafka进行生产数据和消费数据:如果Flink处理过程中出现异常,采取相应的重启机制或设置检查点策略:项目启动后,随着设备接入越来越多,kafka的to ...
- Caused by: java.nio.file.FileSystemException: ..... : 打开的文件过多
在高并发处理图片的时候出现这个错误. 18:29:37.993 [pool-9-thread-8] ERROR cn.bywin.cbvsp.service.ImageSevice - 切图出错!! ...
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录 3.网络文件系统的文件,4.字符设备文件 5.(函数)共享库 6.管道,命名管道 7.符号链 ...
- linux查看msg内容,如何打开MSG文件,如何转换MSG文件
具有.MSG文件扩展名的文件很可能是Outlook邮件消息文件. Microsoft Outlook程序可以生成与电子邮件,约会,联系人或任务相关的MSG文件. 如果是电子邮件,MSG文件可能包含消息 ...
最新文章
- python下载大文件-使用请求在python中下载大文件
- 在带有组合框的值列表的下拉列表中显示显示属性的子集
- cigarettes(香烟)
- android中的websocket 应用
- (翻译)开始iOS 7中自动布局教程(二)
- 2 抽象工厂模式(Abstract Factory)
- python 字典处理_Python3 字典 in 操作符
- 多块盘制作成一个lvm
- matlab meshlab,MeshLab(网格模型处理软件)下载-MeshLab官方版下载[电脑版]-PC下载网
- Unity3D水下动物模型大集合
- 从一个置顶CPT广告学习计算广告设计要点
- 为什么要升级BIOS呢?(1)
- 人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets
- Android 银联控件支付开发流程
- uni-app和vue什么关系?
- python进行词频统计_如何利用Python进行文本词频统计
- ncode2019安装教程_nCode2019免费版
- Study day1
- Oracle 数据库12c 16大新特性总结
- 二建 冲刺 机电管理 分讲