错误显示:java.net.SocketException: Too many open files
因为linux内核不光是使用网络时使用socket,在读取本地文件是也是使用socket的,所以读取的文件太多而且不释放的话会导致这个错误,有一个办法
1.
这个在命令行里写就行,可以修改文件的并发数量。但是治标不治本。
2. 千万要注意,检查代码里有没有类似的问题,就是使用bufferreader等文件读取写入的方法是,一定要注意关闭这个流,否则就会出现资源耗尽的情况。
因为linux内核不光是使用网络时使用socket,在读取本地文件是也是使用socket的,所以读取的文件太多而且不释放的话会导致这个错误,有一个办法
1.
echo -ne "
* soft nofile 65536
* hard nofile 65536
" >>/etc/security/limits.conf
这个在命令行里写就行,可以修改文件的并发数量。但是治标不治本。
2. 千万要注意,检查代码里有没有类似的问题,就是使用bufferreader等文件读取写入的方法是,一定要注意关闭这个流,否则就会出现资源耗尽的情况。
finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}