异常:java.io.IOException: Too many open files:
解决方案:
ulimit -n
Linux: vi /etc/security/limits.conf
# End of file
* soft nofile 65535
* hard nofile 65535
命令:ulimit -n
原因:
操作系统的中打开文件的最大句柄数受限所致,常常发生在很多个并发用户访问服务器的时候.因为为了执行每个用户的应用服务器都要加载很多文件(new一个socket就需要一个文件句柄),这就会导致打开文件的句柄的缺乏.
解决:
- 尽量把类打成jar包,因为一个jar包只消耗一个文件句柄,如果不打包,一个类就消耗一个文件句柄.
- java的垃圾回收不能关闭网络连接打开的文件句柄,如果没有执行close()(例如:java.net.Socket.close())则文件句柄将一直存在,而不能被关闭.你也可以考虑设置socket的最大打开数来控制这个问题.
-
对操作系统做相关的设置,增加最大文件句柄数量。
- Linux
在Linux内核2.4.x中需要修改源代码,然后重新编译内核才生效。编辑Linux内核源代码中的 include/linux/fs.h文件,将 NR_FILE 由8192改为65536,将NR_RESERVED_FILES 由10 改为 128。编辑fs/inode.c 文件将MAX_INODE 由16384改为262144。或者编辑 /etc/sysctl.conf 文件增加两行 fs.file-max = 65536 和 fs.inode-max = 262144 。一般情况下,系统最大打开文件数比较合理的设置为每4M物理内存256,比如256M.可以用lsof -p <pid of process>看打开的文件句柄数. - Windows
最大文件句柄是16,384,你在任务管理器的性能这一项中可以看到当前打开的句柄数.
查看系统允许打开的最大文件数
#cat /proc/sys/fs/file-max
查看每个用户允许打开的最大文件数
ulimit -a
发现系统默认的是open files (-n) 1024,问题就出现在这里。
在系统文件/etc/security/limits.conf中修改这个数量限制,
在文件中加入内容:
* soft nofile 65536
* hard nofile 65536
1.使用ps -ef |grep java (java代表你程序,查看你程序进程) 查看你的进程ID,记录ID号,假设进程ID为12
2.使用:lsof -p 12 | wc -l 查看当前进程id为12的 文件操作状况
执行该命令出现文件使用情况为 1052
3.使用命令:ulimit -a 查看每个用户允许打开的最大文件数
发现系统默认的是open files (-n) 1024,问题就出现在这里。
4.然后执行:ulimit -n 4096将open files (-n) 1024 设置成open files (-n) 4096
这样就增大了用户允许打开的最大文件数
- Linux
相关推荐
在Java编程中,"java.io.FileNotFoundException: ***** (Too many open files)" 是一个常见的错误,意味着程序尝试打开的文件数量超过了操作系统的限制。这个错误通常出现在处理大量文件或长时间运行的程序中,尤其...
在编程过程中,尤其是在使用C#进行文件系统操作时,可能会遇到这样一个问题:当你尝试删除一个目录,系统返回“System.IO.IOException: 目录不是空的”错误。这意味着该目录下仍有文件或子目录存在,因此无法直接...
在Java编程环境中,"java.security.InvalidKeyException: illegal Key Size" 是一个常见的错误,通常发生在加密或解密操作中。这个错误表示你试图使用的密钥长度超过了Java默认的安全限制。在给定的上下文中,这个...
Java中的`CharConversionException`是`IOException`的一个子类,主要在字符编码转换过程中遇到问题时抛出。在你的问题中,错误提示是"java.io.CharConversionException: isHexDigit",这通常意味着在处理字符或字符...
针对java.io.IOException: entity content is too long [180278508] for the configured buffer limit [157286400]异常,将 DEFAULT_BUFFER_LIMIT修改为150M
java安装路径Java\jre\lib\security下替换这两个架包,即可解决 java.security.cert.CertificateException: Unable to initialize, java.io.IOException: Short read of DER length
把 java 代码直接改成 jsp,上传时产生 如下异常: 2012-12-31 8:59:21 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet jsp threw exception java.io.IOException: ...
在Eclipse集成开发环境(IDE)中使用ANT进行项目构建时,可能会遇到特定的错误提示:“Javadoc failed java.io.IOException Cannot run program javadoc”。这个错误信息表明在生成Java文档的过程中出现了问题,具体...
1. **安装 Java**:Jenkins 需要 Java 运行环境,确保系统已安装最新版的 JDK。 2. **下载 Jenkins**:从官方网站获取适合 Linux 平台的 Jenkins 可执行文件。 3. **启动 Jenkins**:通过命令行启动 Jenkins,例如...
报错:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.-附件资源
Java.io.IOException: The same input jar [E:\Android\myProgram\angel\libs\alipaySdk-20160825.jar] is specified twice. 首先 看一下我项目中关于此jar的配置,我在libs中导入了alipaySdk-20160825.jar,
it.sauronsoftware.jave.EncoderException: java.io.IOException: Cannot run program "C:\Users\moxiao\AppData\Local\Temp\jave-1\ffmpeg.exe": CreateProcess error=740, 请求的操作需要提升。 在最新的liunx ...
ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Failed to set permissions of path: \tmp\hadoop-admin \mapred\local\ttprivate to 0700 at org.apache...
java.io.IOException: Server returned HTTP response code: 403 for URL 处理过程记录 BASIC AUTH2 POST接口,解决403问题
Http-Multipart-Data-Parser-master,如需要http post接口开发、http post传文件等操作可以参考,源码的最原始地址忘记了,这个是从上面down下来新版,各位可参考
2. `java.io.IOException`:这是所有I/O异常的基类,用于处理输入/输出操作中的错误。 3. `java.util.List`:List接口定义了有序的集合,允许有重复元素,并提供了按索引访问的方法。 4. `java.util.HashMap`:...
Android Build 时报错: java.io.IOException: Could not parse XML from android/accounts/annotati...Android构建时报错: app:lintVitalRelease[Fatal Error] :3:214: 与元素类型 “item” 相关联的 “name” ...
主要介绍了 AndroidApk混淆编译时,报告Error:Execution failed for task ‘:gviews:transformClassesAndResourcesWithProguardForRelease’.错误解决办法的相关资料,需要的朋友可以参考下
总的来说,`rxtx-2.1.7.jar`是一个解决Java串口通信中`gnu.io`包缺失问题的关键库,配合`使用说明.txt`,开发者可以轻松地在Java项目中实现串口通信功能。记得在导入JAR文件后,正确配置项目的类路径,确保编译器能...