前言

  • 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(打开的文件过多)相关推荐

  1. too many open files(打开的文件过多)解决方法

    too many open files(打开的文件过多)解决方法 参考文章: (1)too many open files(打开的文件过多)解决方法 (2)https://www.cnblogs.co ...

  2. Tomcat9.0.13 Bug引发的java.io.IOException:(打开的文件过多 Too many open files)导致服务假死...

    问题背景: 笔者所在的项目组最近把生产环境Tomcat迁移到Linux,算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求 ...

  3. Linux 下从命令行打开pdf文件和html文件的命令

    Linux 下从命令行打开pdf文件和html文件的命令 [日期:2012-06-18] 来源:Linux社区 作者:hipercomer [字体:大 中 小] 如果你经常工作在Linux终端下,某个 ...

  4. 【问题分析】打开的文件过多

    [问题分析]打开的文件过多 背景 问题分析 测试 解决 背景 系统上线运行一段时间之后突然崩溃,重启后正常运行,过一段时间后再次崩溃.查看系统日志发现,原因是open too many files,打 ...

  5. java报文件打开数过多_Tomcat报java.io.IOException: 打开的文件过多

    今天后台服务器(Linux)tomcat应用报java.io.IOException: Too many open files 在网上查了一些资料 记录如下: 打开的文件过多,一般来说是由于应用程序对 ...

  6. Error:KafkaStorageException打开的文件过多

    问题描述,在Flink集群大数据处理过程中,向Kafka进行生产数据和消费数据:如果Flink处理过程中出现异常,采取相应的重启机制或设置检查点策略:项目启动后,随着设备接入越来越多,kafka的to ...

  7. Caused by: java.nio.file.FileSystemException: ..... : 打开的文件过多

    在高并发处理图片的时候出现这个错误. 18:29:37.993 [pool-9-thread-8] ERROR cn.bywin.cbvsp.service.ImageSevice - 切图出错!! ...

  8. linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用

    lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录  3.网络文件系统的文件,4.字符设备文件  5.(函数)共享库  6.管道,命名管道 7.符号链 ...

  9. linux查看msg内容,如何打开MSG文件,如何转换MSG文件

    具有.MSG文件扩展名的文件很可能是Outlook邮件消息文件. Microsoft Outlook程序可以生成与电子邮件,约会,联系人或任务相关的MSG文件. 如果是电子邮件,MSG文件可能包含消息 ...

最新文章

  1. python下载大文件-使用请求在python中下载大文件
  2. 在带有组合框的值列表的下拉列表中显示显示属性的子集
  3. cigarettes(香烟)
  4. android中的websocket 应用
  5. (翻译)开始iOS 7中自动布局教程(二)
  6. 2 抽象工厂模式(Abstract Factory)
  7. python 字典处理_Python3 字典 in 操作符
  8. 多块盘制作成一个lvm
  9. matlab meshlab,MeshLab(网格模型处理软件)下载-MeshLab官方版下载[电脑版]-PC下载网
  10. Unity3D水下动物模型大集合
  11. 从一个置顶CPT广告学习计算广告设计要点
  12. 为什么要升级BIOS呢?(1)
  13. 人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets
  14. Android 银联控件支付开发流程
  15. uni-app和vue什么关系?
  16. python进行词频统计_如何利用Python进行文本词频统计
  17. ncode2019安装教程_nCode2019免费版
  18. Study day1
  19. Oracle 数据库12c 16大新特性总结
  20. 二建 冲刺 机电管理 分讲

热门文章

  1. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 1.2 识别不确定性的影响
  2. 学习笔记之APACHE ANT
  3. python-assert
  4. nginx 解析php漏洞
  5. httpclient 小例子编写
  6. 如何在单台计算机上配置 Windows XP SP2 网络保护技术
  7. shift键的十一个妙用
  8. ASP.NET 定时执行任务(定时器)
  9. 放弃广告 反思站长收益来源
  10. 轻松简单地开发Web Services 2