`

Too many open files 问题的解决

 
阅读更多
今天发现tomcat报异常,java.lang.RuntimeException: java.io.FileNotFoundException: /usr/local/apache-tomcat-6.0.32/webapps/jrtSubChannel/WEB-INF/classes/jrtSubChannel.properties (Too many open files)
检查程序发现,properties 读取数据没关闭
系统级解决方法:
lsof -p 12349 查看链接数,12349是tomcat的进程
lsof -P 12349|wc -l


ulimit -u 查看open files设置
ulimit -a 查看所有设置
ulimit -u 65535(新的open files 值)修改设置
ulimit -n 65536 设置用户可以同时打开的最大文件数(max open files)
 
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误  
使用lsof -p pid [httpd进程的 pid、java的pid]来查看系统中apache进程和java运行时进程当前打开的文件资源,发现两者之和已经接近1024,大于了默认的设置。

修改配置:

修改/etc/security/limits.conf,在文件末加上
* soft nofile 65536
* hard nofile 65536

系统级文件描述符极限还可以通过将以下三行添加到 /etc/rc.d/rc.local 启动脚本中来设置:
# Increase system-wide file descriptor limit.
echo 65536 > /proc/sys/fs/file-max
echo 65536 > /proc/sys/fs/inode-max 


具体查看命令:
lsof |wc -l
ps -ef|grep tomcat
lsof -p 18962|wc -l
lsof -p 18962
lsof -p 18962
ps -ef|grep tomcat
lsof -p 15518




linux下, 单个进程默认打开的最多socket是1021个, 其实是1024, 其它三个分别被: stderr, stdin, stdout占用.

要突破1024的限制, 需要改如下三个文件:

1. /etc/init.d/ssh
添加: ulimit -HSn 65536

2. /etc/init.d/cron
添加: ulimit -HSn 65536

3. /etc/security/limits.conf
添加: * hard nofile 65536

查看方法:
ulimit -a , 看 open files数目是不是已经修改成65536

需要重连ssh。 



已得到实验:
修改/etc/security/limits.conf,在文件末加上
* soft nofile 65536
* hard nofile 65536

重新启动即可


  第一步,修改/etc/sysctl.conf文件,在文件中添加如下行:
 
   net.ipv4.ip_conntrack_max = 65536
 
   这表明将系统对最大跟踪的TCP连接数限制设置为10240。请注意,此限制值要尽量小,以节省对内核内存的占用。

/sbin/sysctl -p

发现错误 发现错误出现:
error: "net.ipv4.ip_conntrack_max" is an unknown key

解决方法:modprobe  ip_conntrack 
或者
vi /etc/rc.d/rc.local
 /sbin/modprobe ip_conntrack
或 echo "modprobe ip_conntrack" >> /etc/rc.local






另外的解释

inux下面增加打开文件数的限制:fs.file-max

在linux下面如果报告:too many file opened,就需要增加系统允许打开的文件数。通常默认的是1024(可以通过ulimit查看),要增加这个限制数,需要修改如下的文件:

1 /etc/sysctl.conf,增加:
fs.file-max=65536

2 /etc/security/limits.conf,增加:
* soft nofile 32768
* hard nofile 65536



即file-max是设置 系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。

也就是说,这项参数是系统级别的。

echo  6553560 > /proc/sys/fs/file-max
或修改 /etc/sysctl.conf, 加入
fs.file-max = 6553560 重启生效


2. ulimit的
Provides control over the resources available to the shell and to processes started by it, on systems that allow  such control.

即设置当前shell以及由它启动的进程的资源限制。

显然,对服务器来说,file-max, ulimit都需要设置,否则就可能出现文件描述符用尽的问题,为了让机器在重启之后仍然有效,强烈建立作以下配置,以确保file-max, ulimit的值正确无误:

1. 修改/etc/sysctl.conf, 加入
fs.file-max = 6553560

2.系统默认的ulimit对文件打开数量的限制是1024,修改/etc/security/limits.conf并加入以下配置,永久生效
* soft nofile 65535 
* hard nofile 65535
分享到:
评论

相关推荐

    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 解决方法

    ### Too many open files 解决方法 #### 背景与问题描述 在将Web服务器从Windows环境迁移到Linux环境后,...通过上述解决方案,可以有效地解决“Too many open files”问题,保证Web服务器在高并发环境下的稳定运行。

    报错:too many open files处理

    总的来说,“too many open files”是一个常见的运行时问题,通过理解操作系统限制和程序设计原则,我们可以有效地预防和解决这个问题。对于开发者而言,熟悉这些技巧不仅能提高应用的稳定性和性能,还能避免因错误...

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

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

    linux too many open files解决方案.docx

    Linux too many open files 解决方案 Linux 系统中的打开文件数量限制问题是系统对程序打开文件数量的限制问题。...通过修改打开文件数量限制和核心文件大小限制,可以解决 Linux 系统中的 Too many open files 问题。

    Linux报too many open files的解决方案

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

    AIX关于Weblogic的报错_Too_many_open_files_的处理

    通过上述步骤,我们可以有效地解决AIX环境下Weblogic遇到的“Too many open files”问题。这不仅涉及了系统层面的资源限制调整,还包括了应用级别的优化措施。在实际操作过程中,还需要根据具体情况灵活调整,确保...

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

    下面是解决这个问题的方法。 一、临时修改 ulimit 值 可以使用 ulimit 命令来临时修改打开文件数的限制。例如,使用以下命令可以将打开文件数设置为 655360: [root@kvm-server nginx]# ulimit -n 655360 这将...

    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的原因

    mysql too many open connections问题解决方法

    MySQL中的“Too many open connections”错误...通过以上措施,可以有效地解决或预防“Too many open connections”的问题,保证MySQL服务器的稳定运行。同时,定期审查并调整这些设置,以适应应用程序的增长和变化。

    Linux下打开的文件过多错误

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

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

    Too many connections故障是数据库运维中较为常见的问题,特别是在并发访问量较大的Web应用中,其背后的原理和解决方法值得深入探讨。 在Linux系统中,每个进程可用的文件句柄(file handles)数量是有限制的。文件...

    Ansj中文分词(强大)

    如果你发现此模式分词存在问题.可以看.新词发现.是此分词的初始版本! 此分词保证了准确率,具有人名识别的功能! 此分词结果,具有新词发现,人名识别,机构名识别.也许准确率稍差.但是非常具有应用价值! 献给广大使用...

    nginx fastdfs.docx

    搭建 Nginx 与 FastDFS 的组合,是一种常见的文件存储和分发解决方案。FastDFS 是一个开源的轻量级分布式文件系统,而 Nginx 作为高性能的 Web 服务器和反向代理服务器,两者结合能够提供稳定、高效的文件上传和下载...

    http连接关闭

    too many open files问题分析和解决

    2008mvp.zip

    1. **微软最有价值专家(MVP)计划**:这是一个由微软公司设立的荣誉奖项,授予那些在技术社区中分享知识、帮助他人解决问题并对微软技术做出贡献的专家。 2. **申请流程**:文件可能详细介绍了2008年申请MVP的过程,...

    Hadoop问题处理

    在Hadoop集群中,遇到`java.io.IOException: Too many open file`和`java.lang.OutOfMemoryError`这两种异常,通常是由于资源限制或管理不当引起的。本文将深入探讨这两种错误的成因、解决策略以及如何避免它们。 1...

Global site tag (gtag.js) - Google Analytics