当前位置: 首页 > 面试题库 >

打开lucene索引时出错:映射失败

曹超
2023-03-14
问题内容

我尝试使用1,2,3,4
GB的内存启动该过程,但仍然遇到相同的错误。有小费吗?gc日志显示,即使它有足够的内存,它仍在运行GC。但是可能此错误与使用NIO的内存映射文件有关。有人看过这样的东西吗?如果是这样,您如何解决呢?

$ java -d64 -server -Xmx15g -Xms15g -XX:+UseConcMarkSweepGC  -verbose:gc -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/frank/heap.dmp  -jar lukeall-3.5.0.jar 
    [Full GC 207648K->28758K(15660544K), 0.1105290 secs]
    [Full GC 61479K->15416K(15660544K), 0.0654310 secs]
    [Full GC 69950K->15418K(15660544K), 0.0717170 secs]
    [Full GC 69952K->15418K(15660544K), 0.0661720 secs]
    java.io.IOException: Map failed
        at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:849)
        at org.apache.lucene.store.MMapDirectory$MMapIndexInput.<init>(MMapDirectory.java:265)
        at org.apache.lucene.store.MMapDirectory.openInput(MMapDirectory.java:216)
        at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:89)
        at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:115)
        at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:93)
        at org.apache.lucene.index.DirectoryReader.<init>(DirectoryReader.java:113)
        at org.apache.lucene.index.DirectoryReader$1.doBody(DirectoryReader.java:83)
        at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:754)
        at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)
        at org.apache.lucene.index.IndexReader.open(IndexReader.java:462)
        at org.apache.lucene.index.IndexReader.open(IndexReader.java:377)
        at org.getopt.luke.Luke.openIndex(Unknown Source)
        at org.getopt.luke.Luke.openOk(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at thinlet.Thinlet.invokeImpl(Unknown Source)
        at thinlet.Thinlet.invoke(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Component.java:4861)
    Caused by: java.lang.OutOfMemoryError: Map failed
        at sun.nio.ch.FileChannelImpl.map0(Native Method)
        at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:846)
        ... 48 more

问题答案:
ulimit -v unlimited

解决了问题!



 类似资料:
  • 我试图通过Python在Elasticsearch中创建一个索引。我部署了一个ES的本地实例,查询运行良好。但是,我有一个模式。这里是: 下面是我用来创建这个索引的代码

  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L

  • 我有一个简单的代码:

  • 这是Lucene In Action Book中给出的一个程序。它只索引父文件夹中的文件而不是子文件夹中的文件。因此,我添加了一个if块以递归地查找子文件夹中的文件。但运行此程序后,它正在创建write.lock文件,即使在关闭命令提示符后,它仍继续创建索引文件。代码有什么问题? 我是和的新手,之前我尝试使用apache Commons io查找子文件夹,但我正在获取包不存在错误(包org.apa

  • 问题内容: 在不使索引离线的情况下备份Lucene索引的最佳实践是什么(热备份)? 问题答案: 您不必停止IndexWriter即可备份索引。 只需使用SnapshotDeletionPolicy,它就可以“保护”给定的提交点(及其包含的所有文件),以免被删除。然后,将该提交点中的文件复制到您的备份中,最后释放该提交。 如果备份需要一段时间才能运行,这很好- 只要您不使用SnapshotDelet

  • 假设我有两组对象“Questions”和“Users”,它们共享一个关系。 什么是最好的方法索引我的对象,以允许最新的变化反映在lucene IDEX? 是否应该为用户和问题提供单独的文档,并让lucene根据需要获取所需的问题/用户详细信息? 还是,走数据传输对象的方式?当发生更改时,只需删除这些文档并重新索引?