`

(转)Too many open files

 
阅读更多

 (转) http://langyu.iteye.com/blog/763247

运行在Linux系统上的Java程序可能会出现"Too many open files"的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景。 

        程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访问file的name、location、access authority等相关信息,这样的一个实体被称为file entry。“open files table”(图中橙色标识)存储这些file entry,以数组的形式线性管理。文件描述符(file descriptor)作为进程到open files table的指针,也就是open files table的下标索引,将每个进程与它所访问的文件关联起来了。 

 

        每个进程中都有一个file descriptor table管理当前进程所访问(open or create)的所有文件,文件描述符关联着open files table中文件的file entry。细节不表,对于open files table能容纳多少file entry。Linux系统配置open files table的文件限制,如果超过配置值,就会拒绝其它文件操作的请求,并抛出Too many open files异常。这种限制有系统级和用户级之分。 

       系统级: 
                系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制 
                1  cat /proc/sys/fs/file-max  
                2  sysctl -a 查看结果中fs.file-max这项的配置数量 
                如果需要增加配置数量就修改/etc/sysctl.conf文件,配置fs.file-max属性,如果属性不存在就添加。 
                配置完成后使用sysctl -p来通知系统启用这项配置 

       用户级: 
                Linux限制每个登录用户的可连接文件数。可通过  ulimit -n来查看当前有效设置。如果想修改这个值就使用 ulimit -n <setting number> 命令。(或者 ulimit -SHn 10240) 但是设置后只是当前会话有效.

还有两种做法

一种是在/etc/security/limits.conf里设置:重启生效

soft nofile 10240

hard nofile 10240

 一种是在/etc/profile 中增加一行 ulimit -n 10240
在出现Too many open files问题后,首先得找出主要原因,最大的可能是打开的文件或是socket没有正常关闭。
Java代码  收藏代码
  1. lsof -p $java_pid 每个文件描述符的具体属性  
  2. lsof -p $java_pid | wc -l  当前Java进程file descriptor table中FD的总量  

 

分享到:
评论

相关推荐

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法 JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES错误是一种常见的网络编程错误,发生在Java应用程序中, especialmente 在 Linux 操作系统中。该错误的出现是...

    Too many open files 问题的解决.txt

    ### Too many open files 问题详解与解决方案 在Linux系统中,“Too many open files”错误是一个常见的性能瓶颈,尤其是在运行大量并发服务或应用时。这个问题的根本在于操作系统对每个进程可打开的文件数量有限制...

    报错:too many open files处理

    在IT行业中,我们经常遇到各种错误,其中之一是“too many open files”。这个错误通常发生在操作系统限制了同一时间可打开的文件数量,而程序试图超出这个限制时。在本篇文章中,我们将深入探讨这个问题,理解其...

    java.io.FileNotFoundException: *****(Too many open files)

    在Java编程中,"java.io.FileNotFoundException: ***** (Too many open files)" 是一个常见的错误,意味着程序尝试打开的文件数量超过了操作系统的限制。这个错误通常出现在处理大量文件或长时间运行的程序中,尤其...

    Too many open files 解决方法

    ### Too many open files 解决方法 #### 背景与问题描述 在将Web服务器从Windows环境迁移到Linux环境后,遇到了一个常见的问题:“java.net.SocketException: Too many open files”。这种异常通常发生在高并发...

    AIX关于Weblogic的报错_Too_many_open_files_的处理

    ### AIX关于Weblogic的报错“Too many open files”的处理 #### 背景与问题概述 在AIX环境中部署Weblogic时,可能会遇到一个常见的错误提示:“Too many open files”。这一错误提示通常出现在系统资源限制不当的...

    linux too many open files解决方案.docx

    Linux too many open files 解决方案 Linux 系统中的打开文件数量限制问题是系统对程序打开文件数量的限制问题。这个限制可以通过 `ulimit -a` 命令来查看。默认情况下,Linux 系统的打开文件数量限制是 1024,可以...

    Linux报too many open files的解决方案

    Linux系统在运行时经常会出现"too many open files"(文件打开过多)的错误,这是一个非常常见的问题,通常发生在当系统运行的应用程序尝试打开的文件数量超过了系统限制时。为了解决这个问题,我们可以从两个方面...

    访问应用很慢,访问Nginx时,报错:accept() failed (24 Too many open files).docx

    "解决 Nginx 访问慢和 accept() failed 错误的方法" 在本文中,我们将讨论 Nginx 访问慢和 accept() failed 错误的解决方案。这个问题通常是由于 Nginx 的连接数超过了系统设定的最大值造成的。...

    Python错误提示:[Errno 24] Too many open files的分析与解决

    在Python编程过程中,可能会遇到一个常见的错误提示:“[Errno 24] Too many open files”。这个错误通常意味着你的程序尝试打开的文件句柄超过了操作系统允许的最大限制。下面我们将深入探讨这个问题的原因、如何...

    socket accept报too many open files的原因

    socket accept报Too many open files的原因

    Linux下打开的文件过多错误

    Linux下运行tomcat或者was出现java.net.SocketException: 打开的文件过多错误 tomcat报“too many open files”的错误,解决办法如下:

    Ansj中文分词(强大)

    Ansj中文分词是一款纯Java、主要用于自然语言处理、高精度的中文分词工具,目标是“准确、高效、自由地进行中文分词”。 ... 此分词具有自己学习的功能,所以拜托大家不要.乱提交数据.会带坏人家的....

    39 案例实战:如何解决经典的Too many connections故障?背后原理是什么.pdf

    除了文件句柄限制之外,ulimit命令还可以限制其他资源的使用,例如coreFileSize(进程崩溃转储文件大小)、maxLockedMemory(最大锁定内存大小)、openFiles(最大打开文件句柄数)以及maxUserProcesses(最大用户...

    nginx fastdfs.docx

    【Nginx FastDFS 搭建指南】 搭建 Nginx 与 FastDFS 的组合,是一种常见的文件存储和分发解决方案。FastDFS 是一个开源的轻量级分布式文件系统,而 Nginx 作为高性能的 Web 服务器和反向代理服务器,两者结合能够...

    2008mvp.zip

    【标题】"2008mvp.zip" 暗示了这个压缩文件可能与2008年的某个项目或活动相关,特别是因为"MVP"通常代表“Most Valuable Player”(最有价值球员),在体育奖项中常见,但在IT领域,它也可能指的是“Microsoft Most ...

    http连接关闭

    too many open files问题分析和解决

    bigslice:一种用于Go编程语言的无服务器集群计算系统

    大片 Bigslice是的无服务器集群数据处理系统。...如果测试因socket: too many open files失败socket: too many open files错误socket: too many open files ,请尝试增加打开文件的最大数量。 $ ulimit -n 2000

    Hadoop集群(第12期副刊)_Hbase性能优化

    Linux系统最大可打开文件数一般默认的参数值是1024,如果你不进行修改并发量上来的时候会出现“Too Many Open Files”的错误,导致整个HBase不可运行,你可以用ulimit -n 命令进行修改,或者修改/etc/security/...

Global site tag (gtag.js) - Google Analytics