SOLR-Server 的常规错误 500

SOLR-Server 的常规错误 500

最近几周,我们客户的 SOLR 服务器系统经常出现相同的错误,而且越来越频繁。现在几乎每天都会出现。在客户端中,SOLR 3.6 向 PHP 客户端抛出此异常:

java.lang.RuntimeException: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/var/solr/data/spellchecker/write.lock
    at org.apache.solr.spelling.IndexBasedSpellChecker.build(IndexBasedSpellChecker.java:92)
    at org.apache.solr.handler.component.SpellCheckComponent.prepare(SpellCheckComponent.java:109)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:165)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:679)
Caused by: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/var/solr/data/spellchecker/write.lock
    at org.apache.lucene.store.Lock.obtain(Lock.java:84)
    at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1098)
    at org.apache.lucene.search.spell.SpellChecker.clearIndex(SpellChecker.java:535)
    at org.apache.solr.spelling.IndexBasedSpellChecker.build(IndexBasedSpellChecker.java:88)
    ... 18 more

这只能通过重新启动 Servlet 容器(Tomcat 6)来解决。但是,与 SOLR 通信curl完全没有问题。只有 PHP 客户端不断抛出此错误。据我们所知,我们甚至根本没有接触过spellcheckerSOLR 的任何模块。崩溃似乎发生在没有索引发生的时候。

我尝试通过增加 RAM 数量并将 WriteLockTimeout 设置为 20 秒来解决这个问题,但问题仍然存在。

有人能帮忙提示一下这个问题是什么吗?

答案1

事实证明这是内存问题。在安装 tomcat 时,有人将 JVM 的最大堆大小设置为 128M,这导致 JVM 停止分配任何内存。OutOfMemoryException我们没有收到正确的信息,而是收到了这些神秘的消息。

答案2

如果您根本不触及拼写检查器模块,您可以从配置中取消注释该部分并重新启动服务吗?

我认为您收到了多个“&spellcheck.build=true”请求(因此它在构建时尝试重建,因此被锁定) - 如果您将所有 solr 请求记录在某处,请检查是否可以阻止它们?

相关内容