在linux下跑一个多线程读取文件的程序,待读取文件有数十万个。程序读取过程中抛出如下异常*****(Too many open files)。
原因是由于linux限制了一次会话中,程序最大同时打开文件数目。在redhat5中,该数值为1024。可以使用ulimit -n 验证。
解决办法
1、临时修改该数值,可使用
ulimit -n XXXX
2、永久修改
2.1. 查看当前设置
ulimit -n
(默认是1024)
2.2. 查看系统可接受的最大打开文件数(一般默认已足够,不用修改)
# cat /proc/sys/fs/file-max
(默认可能是372998,已足够)
如果小于你期望的值,可以改大:
# echo 327998 > /proc/sys/fs/file-max
或者写入 /etc/sysctl.conf 中,以便重启也能生效:
fs.file-max = 327998
2.3. 修改/etc/security/limits.conf文件,设置用户最大打开文件数
#<domain> <type> <item> <value>
* - nofile 2048 (添加这一行)
这样即设置系统每个用户的最大打开文件数为2048。
注意 nofile 参数在 type 类型上有2个可能的选项:hard 和 soft ,这两个值都需要设置,“-”代表同时设置这2个值为后面的数字。
hard limit 只是作为 soft limit 的上限,soft limit 才是你设置的系统当前限制。当你设置 hard limit 后,你以后设置的 soft limit 的值就只能小于 hard limit 。普通用户可以降低 hard limit 的值,但是不能提高它,只有 root 用户才能提高 hard limit。
2.4. 退出shell登陆,重新登陆一次即生效(运行ulimit -n 检查)
已经启动的进程,可能需要关闭后重新启动才生效。
参考
http://chen.wenz.blog.163.com/blog/static/6774385420105994434152/
附件 来源网络整理
分享到:
相关推荐
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.ReportViewer.WinForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies....
在Java开发过程中,使用文件I/O操作时遇到java.io.FileNotFoundException异常是一个比较常见的问题。即使文件路径正确无误,也可能会因为多种原因导致这个异常的发生。该异常属于编译时异常,即必须显式处理才能通过...
21. `java.io.FileNotFoundException`:当尝试打开不存在的文件时抛出的异常。 22. `java.io.OutputStream`:OutputStream是所有字节输出流的基类。 23. `java.util.regex.Pattern`:Pattern类用于编译正则表达式...
关键是本地服务器没有写入的权限 关键看这里吧(Permission denied), 一直没有看正方,以为是配置... java.io.FileNotFoundException: logs/bandwidth.log.2019-04-25.log (Permission denied) at java.io.FileNotFou
java运行环境jdk1.8.0_131,windows下64位操作系统,添加环境变量JAVA_HOME:C:\Program Files\Java\jdk1.8.0_131 classpath:.,C:\Program Files\Java\jdk1.8.0_131jre\lib\rt.jar,C:\Program Files\Java\jdk1.8.0_131\...
启动eclipse 时出现错误警告
而针对Windows用户,开发和运行Hadoop应用时会遇到一个常见问题:“Did not find winutils.exe: java.io.FileNotFoundException”。这个错误是由于Hadoop在Windows环境下找不到`winutils.exe`文件所引起的。`...
### Java.io包详解 #### 一、概述 Java.io包是Java编程语言中非常重要的一个标准库,它提供了丰富的类和接口,支持多种输入/输出流的处理方式,包括文件I/O、网络通信等场景。Java.io包的核心设计思想是以流...
Caused by: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. at org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:468) at org.apache.hadoop.util.Shell....
Java解析Excel是Java开发中常见的任务,特别是在处理数据导入导出、数据分析或自动化测试场景下。Apache POI库是Java领域最广泛使用的工具之一,专门用于读取和写入Microsoft Office格式的文件,包括Excel(.xls和....
- **java.io.FileNotFoundException**:打开或创建指定的文件失败时抛出。 - **java.lang.NumberFormatException**:尝试将字符串转换为数字类型,但格式不正确时抛出。 - **java.sql.SQLException**:处理数据库...
在Java中,IO操作主要分为字节流和字符流两大类,分别由`java.io.InputStream`和`java.io.OutputStream`以及`java.io.Reader`和`java.io.Writer`作为基类。字节流处理的是8位的字节,而字符流处理的是16位的Unicode...
- **`java.io.FileNotFoundException`**:文件未找到异常。 - **`java.lang.NumberFormatException`**:字符串转换为数字异常。 - **`java.sql.SQLException`**:操作数据库异常。 - **`java.io.IOException`**...
在Java编程语言中,`java.io`包是核心部分之一,它包含了用于输入/输出(I/O)操作的各种类和接口。北大青鸟的课程中,`java.io`的经典例子通常会涵盖基本的文件读写、流的使用、数据转换等关键概念。以下是基于这个...
Java POI库是Apache软件基金会开发的一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。在本示例"Java POI读取Excel文件基本用法Demo"中,我们将深入探讨如何使用Java POI库来...
- `java.io.FileNotFoundException`: 当尝试打开指定路径的文件失败时抛出的异常。 - `java.io.IOException`: 执行I/O操作时可能抛出的通用异常。 2. **定义类和主方法**: - 定义了一个名为`FileOperation`的...
System.IO.FileNotFoundException:“未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或它的某一个依赖项。系统找不到指定的文件。” ...
WebSphere 是一个基于 Java 的应用服务器,广泛应用于企业级应用开发中。然而,在实际开发和部署过程中,可能会遇到一些棘手的问题,影响应用程序的稳定性和性能。 Error 404: SRVE0190E 的解决办法 Error 404: ...