Php5
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-Container (Tomcat 6)。然而,與 SOLR 交談
curl
完全沒有問題。只有 PHP-Client 會持續拋出這個錯誤。而且據我們所知,我們甚至根本沒有接觸spellchecker
過 SOLR 的任何模組。並且崩潰似乎發生在沒有索引發生的時候。我試圖通過將 RAM 數量和 WriteLockTimeout 增加到 20 秒來解決這個問題,但問題仍然存在。
任何人都可以幫助提示問題是什麼?
原來是記憶體有問題。在安裝了 tomcat 後,有人留下了 JVM 的最大堆大小 128M,這導致 JVM 停止分配任何記憶體。
OutOfMemoryException
我們得到了這些神秘的資訊,而不是正確的 s。
如果您根本不碰拼寫檢查模組,您可以從配置中取消註釋該部分並重新啟動服務嗎?
我認為您收到了多個“&spellcheck.build=true”請求(因此它正在嘗試重建,而它已經在建構,因此鎖定) - 如果您在某處記錄所有 solr 請求,請檢查是否可以阻止它們?