`
pengtyao
  • 浏览: 401039 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Linux中打开了太多文件(Too many open files)的解决方法

阅读更多
回答一(已验证可行)、

方法1 (永久调整)

vi /etc/security/limits.conf


在文件末加上:
* soft nofile 99999
* hard nofile 99999
  // * 表示所有用户 数值不要调的太大 这个跟硬件有关

同时vi /etc/sysctl.conf末尾添加

fs.file-max = 99999


重新启动,在使用ulimit -n查看的数已经是99999

编辑完成后,请执行以下命令使变动立即生效:

/sbin/sysctl -p 


方法2 (临时生效)

直接在终端输入 ulimit -n 99999按回车就ok了

回答二、

Linux内核有时会报告“Too many open files”,起因是file-max默认值(8096)太小。要解决这个问题,可以root身份执行下列命令(或将它们加入/etc/rcS.d/*下的init脚本。)

# echo "65536"  > /proc/sys/fs/file-max  # 适用于2.2和2.4版内核
# echo "131072" > /proc/sys/fs/inode-max # 仅适用于2.2版内核


回答三、

办法是修改操作系统的打开文件数量限制,方法如下:

1. 按照最大打开文件数量的需求设置系统, 并且通过检查/proc/sys/fs/file-max文件来确认最大打开文件数已经被正确设置。
# cat /proc/sys/fs/file-max

如果设置值太小, 修改文件/etc/sysctl.conf的变量到合适的值。 这样会在每次重启之后生效。 如果设置值够大,跳过下步。
# echo 2048 > /proc/sys/fs/file-max

编辑文件/etc/sysctl.conf,插入下行。
fs.file-max = 8192


2. 在/etc/security/limits.conf文件中设置最大打开文件数, 下面是一行提示:
#
添加如下这行。
* - nofile 8192


这行设置了每个用户的默认打开文件数为2048。 注意"nofile"项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用"-"字符设定, 则hard和soft设定会同时被设定。
硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。
当增加文件限制描述,可以简单的把当前值双倍。 例子如下, 如果你要提高默认值1024, 最好提高到2048, 如果还要继续增加, 就需要设置成4096。

另外一种情况是在创建索引的时候,也有两种可能,一种是 合并因子太小,导致创建文件数量超过操作系统限制,这时可以修改合并因子,也可以修改操作系统的打开文件数限制;另外一种是合并因子受虚拟机内存的限制,无法调整到更大,而 需要索引的doc 数量又非常的大,这个时候就只能通过修改操作系统的打开文件数限制来解决了。

在此基础上,我还修改了以下一个配置文件
vi /etc/sysctl.conf
添加:
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
#Turn off tcp_timestamps
net.ipv4.tcp_timestamps = 0

然后 service network restart,这些都和TCP sockets有关的优化。

另外需要在 /etc/rc.d/rc.local里添加已使得重启的时候生效。
echo "30">/proc/sys/net/ipv4/tcp_fin_timeout
echo "1800">/proc/sys/net/ipv4/tcp_keepalive_time
echo "0">/proc/sys/net/ipv4/tcp_window_scaling
echo "0">/proc/sys/net/ipv4/tcp_sack
echo "0">/proc/sys/net/ipv4/tcp_timestamps

因为不是所有的程序都在root下跑的,所有linux有对hard 与soft open files 的区分,普通用户受hard的限制,无论ulimit -n $数值调到多高,都跑不到 /etc/security/limits.conf里nofile的值.

这样的优化后 lsof -p $java_pid|wc -l可以跑到4千以上都不会抛出too many open files。

原文:http://www.kuqin.com/linux/20090624/58441.html
分享到:
评论

相关推荐

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

    JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES错误是一种常见的网络编程错误,发生在Java应用程序中, especialmente 在 Linux 操作系统中。该错误的出现是由于进程打开的文件数量超过了操作系统的限制,导致服务器...

    Too many open files 解决方法

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

    Too many open files 问题的解决.txt

    ### Too many open files 问题详解与解决方案 在Linux系统中,“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"(文件打开过多)的错误,这是一个非常常见的问题,通常发生在当系统运行的应用程序尝试打开的文件数量超过了系统限制时。为了解决这个问题,我们可以从两个方面...

    报错:too many open files处理

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

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

    在Java编程中,"java.io.FileNotFoundException: ***** (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

    在本文中,我们将讨论 Nginx 访问慢和 accept() failed 错误的解决方案。这个问题通常是由于 Nginx 的连接数超过了系统设定的最大值造成的。下面是解决这个问题的方法。 一、临时修改 ulimit 值 可以使用 ulimit ...

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

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

    Linux下打开的文件过多错误

    Linux下运行tomcat或者was出现java.net.SocketException: 打开的文件过多错误 tomcat报“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”错误通常意味着服务器已经达到了其允许的最大并发连接数,并且无法接受更多的连接请求。这是数据库管理中的一个常见问题,尤其是在高并发访问的应用中。以下是一些解决此问题...

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

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

    linux系统级别的能够打开的文件句柄的数file-max命令.docx

    ulimit 命令可以控制进程可以打开的文件句柄的数量,以免进程打开太多的文件句柄导致“Too many open files”错误。 在使用 file-max 命令时,需要注意软限制和硬限制的区别。软限制是内核强加给相应资源的限制值,...

    Linux 下应用程序最大打开文件数的理解和修改.docx

    在Linux操作系统中,...总之,理解并调整Linux中的文件打开数限制是解决“Too many open files”问题的关键。通过监控和优化进程的文件管理,以及适当地调整系统和用户级别的限制,可以确保程序能够高效稳定地运行。

    Linux下应用程序大打开文件数的理解和修改

    运行在Linux系统上的Java程序运行了一段时间后出现Too many open files的异常情况。  这种情况常见于高并发访问文件系统,多线程网络连接等场景。程序经常访问的文件、socket在Linux中都是文件file,系统需要记录...

    nginx fastdfs.docx

    - 在 Nginx 的配置文件(如 `/etc/nginx/nginx.conf`)中,添加 FastDFS 相关的 server 块和 location 块,用于处理文件上传和下载请求。 **六、测试与启动** 1. 测试 Nginx 配置是否正确:`nginx -t` 2. 如果...

    Free Pascal编译的程序运行错误代码解析.doc

    Run time errors Free Pascal生成的应用程序也许会生成一些...4 Too many open files 打开太多的文件 当前你的程序当前打开的文件太多咯.超过了操作系统允许打开的最多文件数. 5 File access denied 文件访问拒绝

Global site tag (gtag.js) - Google Analytics