我已经增加了我的macbook pro上的最大文件限制,以便Elasticsearch可以处理更多文件,但它无法正常工作.
我运行命令'ulimit -a',它说"打开文件"是100,000.我可以像这样运行一个简单的shell脚本:
export counter=0
while (true) ; do touch "/tmp/foo${counter}" ; export counter=`expr $counter + 1` ; done
Run Code Online (Sandbox Code Playgroud)
而且我能够创建大量文件(在我杀死脚本之前超过60,000个).
但是,使用Java代码在"/ tmp"目录的空子目录中创建RandomAccessFiles,在出现错误之前,我只能生成10,232个文件:java.io.FileNotFoundException(打开的文件太多).这是我的Java代码:
import java.io.*;
import java.util.*;
public class max_open_files {
public static void main(String ... args) throws Exception {
File testDir = new File("/tmp/tempsubdir");
testDir.mkdirs();
List<File> files = new LinkedList<File>();
List<RandomAccessFile> fileHandles = new LinkedList<RandomAccessFile>();
try {
while (true) {
File f = new File(testDir, "tmp" + fileHandles.size());
RandomAccessFile raf = new RandomAccessFile(f, "rw");
files.add(f);
fileHandles.add(raf);
}
} catch …Run Code Online (Sandbox Code Playgroud)