gpt4 book ai didi

java - 打开lucene索引时出错: java. io.IOException:映射失败

转载 作者:行者123 更新时间:2023-12-01 11:06:29 31 4
gpt4 key购买 nike

我有一个问题,我认为与此处描述的问题相同:

Error when opening a lucene index: Map failed

但是该解决方案不适用于这种情况,因此我将提供更多详细信息并再次询问。

索引是使用Solr 5.3创建的

导致异常的代码行是:

IndexReader indexReader = DirectoryReader.open(FSDirectory.open(Paths.get("the_path")));

异常堆栈跟踪是:

Exception in thread "main" java.io.IOException: Map failed: MMapIndexInput(path="/mnt/fastdata/ac1zz/JATE/solr-5.3.0/server/solr/jate/data_aclrd/index/_5t.tvd") [this may be caused by lack of enough unfragmented virtual address space or too restrictive virtual memory limits enforced by the operating system, preventing us to map a chunk of 434505698 bytes. Please review 'ulimit -v', 'ulimit -m' (both should return 'unlimited'), and 'sysctl vm.max_map_count'. More information: http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html]
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:907)
at org.apache.lucene.store.MMapDirectory.map(MMapDirectory.java:265)
at org.apache.lucene.store.MMapDirectory.openInput(MMapDirectory.java:239)
at org.apache.lucene.codecs.compressing.CompressingTermVectorsReader.<init>(CompressingTermVectorsReader.java:144)
at org.apache.lucene.codecs.compressing.CompressingTermVectorsFormat.vectorsReader(CompressingTermVectorsFormat.java:91)
at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:120)
at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:65)
at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:58)
at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:50)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:731)
at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:50)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:63)
at uk.ac.shef.dcs.jate.app.AppATTF.extract(AppATTF.java:39)
at uk.ac.shef.dcs.jate.app.AppATTF.main(AppATTF.java:33)

异常消息中建议的解决方案在这种情况下不起作用,因为我正在服务器上运行应用程序,并且我无权更改这些解决方案。

也就是说,

ulimit -v unlimited

打印:“-bash:ulimit:虚拟内存:无法修改限制:不允许操作”

和 sysctl -w vm.max_map_count=10000000

给出:“错误: key 'vm.max_map_count'的权限被拒绝”

有什么办法可以解决这个问题吗?

谢谢

最佳答案

我已经找到了解决方案,所以我正在回答自己。

如果你确实无法设置ulimit或vm.max_map_count,唯一的解决方案,根据http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html ,就是配置你的solr(或者如果你使用Lucene api,明确选择)使用SimpleFSDirectory(如果是windows)或NIOFSDirectory,两者都比默认的慢。

例如

DirectoryReader.open(new NIOFSDirectory(Paths.get("path_to_index"), FSLockFactory.getDefault()))

关于java - 打开lucene索引时出错: java. io.IOException:映射失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32895139/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com