知识库

Lucene-1.0 错误“打开的文件太多”的解释

如果在 $NEO4J_HOME/logs/debug.log 中遇到类似“打开的文件太多”的错误

Caused by: java.nio.file.FileSystemException: /data/neo4j/db/schema/index/lucene_native-2.0/1612/lucene-1.0: Too many open files
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:427)
    at java.nio.file.Files.newDirectoryStream(Files.java:457)

可以通过在 $NEO4J_HOME/conf/neo4j.conf 中设置 和 参数来解决

dbms.jvm.additional=-Dorg.neo4j.io.pagecache.implSingleFilePageSwapper.channelStripePower=0

如果没有此参数,我们将为每个索引维护到单个文件的许多打开的文件句柄,其中每个句柄负责文件的一部分。而如果设置了上述参数,我们将为每个文件有一个打开的文件句柄,从而减少打开的文件句柄的数量。

需要注意的是,在 Neo4j 4.0 中,此参数将自动默认为 0。