昨天突然我们的solr服务器因以下异常而停止了
org.apache.solr.common.SolrException:在打开新搜索器时出错 org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1438)at at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1550)at at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1319)at at org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:574) 在 org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:95) 在 org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:64) 在 org.apache.solr.update.processor.DistributedUpdateProcessor.processCommit(DistributedUpdateProcessor.java:1147) 在 org.apache.solr.update.processor.LogUpdateProcessor.processCommit(LogUpdateProcessorFactory.java:157) 在 org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:266) 在org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:173) 在 org.apache.solr.handler.UpdateRequestHandler $ 1.load(UpdateRequestHandler.java:92)
引起:java.io.IOException:Map失败了 sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:889)at at org.apache.lucene.store.MMapDirectory.map(MMapDirectory.java:283)at org.apache.lucene.store.MMapDirectory $ MMapIndexInput。
但当时我们在该服务器上留下了大量内存。有什么猜测吗?
答案 0 :(得分:1)
假设它是一个Linux系统,你可以尝试ulimit -v unlimited
查看以下链接以获取更多信息。
https://support.lucidworks.com/hc/en-us/articles/206127457-Caused-by-java-io-IOException-Map-failed
https://stackoverflow.com/a/8893684/689625
如果您包含更多信息,例如软件版本(在本例中为solr版本),操作系统名称和版本,Java版本等,您将获得更快的答案。
答案 1 :(得分:1)
我收到了这个错误:
Error creating core [mm_shard1_replica1]: Error opening new searcher
并尝试摆弄ulimit
和max_map_count
最后它被证明是一个错误的错误消息,因为问题证明是一个腐败的索引。
通过关闭solr并执行此操作来修复它:
cd /var/lib/solr/example/solr-webapp/webapp/WEB-INF/lib
java -cp lucene-core-4.10.4.jar -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex /path/to/index -fix
要检查索引是否已损坏,请删除上述命令末尾的-fix
。之后我启动了solr,它从solrcloud集群的其余部分重新创建了索引。
答案 2 :(得分:0)
标志-fix在我的更高版本中不起作用,相反,我使用了exorcise
java -cp lucene-core-5.5.0.jar -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex PATH_TO_INDEX -exorcise
我希望这会有所帮助。