2010-05-24 12 views
10

내 응용 프로그램에서 Solr 작업하고 있습니다. apache-solr-solrj-1.4.0.jar을 사용하고 있습니다.SolrException : 내부 서버 오류

org.apache.solr.common.SolrException :

내가 CommonsHttpSolrServer에서 add(SolrInputDocument doc)를 호출하려고

, 나는 다음과 같은 예외가 무엇입니까 내부 서버 오류를 내부 서버 오류 을 org.apache.solr에서 .client.solrj.impl.CommonsHttpSolrServer.request (CommonsHttpSolrServer.java:424) (org.apache.solr.java : 243) at org.apache.solr.client .solrj.request.AbstractUpdateRequest.process (AbstractUpdateRequest.java:105) at org.apache.solr.client.solr j.SolrServer.add (SolrServer.java:64)

누구든지이 문제를 해결할 수 있습니까?

<lockType>native</lockType> 
<unlockOnStartup>false</unlockOnStartup> 
<reopenReaders>true</reopenReaders> 

나는 SOLR 서버 로그에 다음과 같은 예외가 점점 오전 :

2010년 5월 24일 2

다음을

solrconfig.xml의 속성은 다음과 같습니다 51:22 AM org.apache.solr.common.SolrException 로그 SEVERE : java.lang.NullPointerException at org.apache.solr.handler.ReplicationHandler $ 4.p ostCommit org.apache.solr.update.UpdateHandler.callPostCommitCallbacks에서 (ReplicationHandler.java:922) (UpdateHandler.java:78) org.apache.solr.update.DirectUpdateHandler2.commit (DirectUpdateHandler2.java:411)에서 에서 org.apache.solr.update.processor.RunUpdateProcessor.processCommit (RunUpdateProcessorFactory.java:85) at org.apache.solr.handler.RequestHandlerUtils.handleCommit (RequestHandlerUtils.java:107) at org.apache.solr.handler. ContentStreamHandlerBase.handleRequestBody (ContentStreamHandlerBase.java:48) at org.apache.solr.handler.RequestHandlerBase.handleRequest (RequestHandlerBase.java:131) at org.apache.solr.core.SolrCore.execute (SolrCore.java:1316) at org.apache.solr.servlet.SolrDispatchFilter.execute (SolrDispatchFil org.apache.solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:241) 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 (StandardContextValue.java:191) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) at org. apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke (JvmRouteBinderValve.java:210) at org.apache.catalina.ha.tcp.ReplicationValve.invoke (ReplicationValve.java:347) at org.apache. catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:293) at org.apache.jk.server.JkCoyoteHandler.invoke (JkCoyoteHandler.java : 190) at org.apache.jk.common.HandlerRequest.invoke (HandlerRequest.java:291) at org.apache.jk.common.ChannelSocket.invoke (ChannelSocket.java:769) at org.apache. org.apache.jk.common.ChannelSocket $ SocketConnection.runIt (ChannelSocket.java:891) at org.apache.tomcat.util.threads.ThreadPool $ java.lang.Thread.run에서 ControlRunnable.run (ThreadPool.java:690) (Thread.java:619)


INFO : {0} 0,123,516 1,2010 년 5 월 24 일 2:52:29 AM org.apache.solr.common.SolrException 로그 SEVERE : org.apache.lucene.store.LockObtainFailedException : 잠금 획득 시간이 초과되었습니다. NativeFSLock @./solr/data/index/lucene -be18de26b941317e71dc59f9e5ba63c4-write.lock (org.apache.lucene.store.Lock.obtain) apache.lucene.index.IndexWriter. (IndexWriter.java:1402) at org.apache.solr.update.SolrIndexWriter. (SolrIndexWriter.java:190) at org.apache.solr.update.UpdateHandler.createMainIndexWriter (UpdateHandler. java : 98) at org.apache.solr.update.DirectUpdateHandler2.openWriter (DirectUpdateHandler2.java:173) at org.apache.solr.update.DirectUpdateHandler2.add Doc (DirectUpdateHandler2.java:220) at org.apache.solr.update.processor.RunUpdateProcessor.processAdd (RunUpdateProcessorFactory.java:61) at org.apache.solr.handler.XMLLoader.processUpdate (XMLLoader.java:139) at org.apache.solr.handler.XMLLoader.load (XMLLoader.java:69) at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody (ContentStreamHandlerBase.java:54) at org.apache.solr.handler. RequestHandlerBase.handleRequest (RequestHandlerBase.java:131) at org.apache.solr.core.SolrCore.execute (SolrCore.java:1316) at org.apache.solr.servlet.SolrDispatchFilter.execute (SolrDispatchFilter.java:338) at org.apache.solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:241) 또는 org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) 에서 org.apache.catalina.core.StandardWrapperValve. 호출 (StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191)에서 org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128)에서 에서 org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.ha.session. JvmRouteBinderValve.invoke (JvmRouteBinderValve.java:210) at org.apache.catalina.ha.t org.apache.jk.server.JkCoyoteHandler.invoke (JkCoyoteHandler.java : 0123) 190) at org.apache.jk.common.HandlerRequest.invoke (HandlerRequest.java:291) at org.apache.jk.common.ChannelSocket.invoke (ChannelSocket.java:769) at org.apache.jk. common.ChannelSocket.processConnection (ChannelSocket.java:698) at org.apache.jk.common.ChannelSocket $ SocketConnection.runIt (ChannelSocket.java:891) at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable. run (ThreadPool.java:690) at java.lang.Thread.run (Thread.java : 619)

답변

1

나는 매우 확실하지 오전하지만,이 스레드에서

http://www.mail-archive.com/[email protected]/msg08048.html

는 내가이만큼 안전해야한다고 생각

<unlockOnStartup>true</unlockOnStartup> 

<lockType>simple</lockType> 

를 사용하는 것이 좋습니다 solr 또는 solrj를 통해 색인에 액세스합니다 (lucene가 아니라도!).

다른 아이디어?

+0

를? –

0

SolrJ 클라이언트는 실제 오류를주지 않습니다. tomcat 또는 jetty (또는 solr을 실행하는 모든 서버) 아래에 있어야하는 solr 서버 로그를 살펴보십시오.

5

내 solrconfig.xml에서 다음과 같이 설정하고 작동합니다. 또한

<lockType>simple</lockType> 
<unlockOnStartup>true</unlockOnStartup> 

, 설정 인덱스 디렉토리에 쓰기 잠금 예외를 방지하기 위해 다음

<maxFieldLength>10000</maxFieldLength> 
<writeLockTimeout>60000</writeLockTimeout> 
<commitLockTimeout>60000</commitLockTimeout> 
+0

이것이 사실 인 것처럼 보일지라도,''unlockOnStartup'''는 당신이 잠그지 않았다고 가정하고 타임 아웃을 설정하는 것은 전혀 효과가 없어야합니다. 최소한 solrconfig.xml – brutuscat

+0

의 문서를 기반으로합니다. https://cwiki.apache.org/confluence/display/solr/IndexConfig+in+SolrConfig : Solf 4에서 maxFieldLength 매개 변수가 제거되었습니다. 필드 길이를 제한하면 중요한 점은 제한하려는 필드에 대해 정의 할 수있는 LimitTokenCountFactory를 사용하여 유사한 동작을 얻을 수 있다는 것입니다. 예를 들어 은 필드를 10,000 자로 제한합니다. [/ code] –

0

은 .. 나는 이상하게도 유사한 다시 시작 뭔가 일을했다 손상된 인덱스 또는 통화 중 잠금 파일과 같은 소리.

0

일부 업데이트 작업 후에 write.lock 파일을 제거하지 못했기 때문입니다. 코어의 data/index 폴더에서 write.lock을 제거하면이 문제가 일시적으로 해결되고 업데이트 작업을 다시 얻을 수 있습니다. post.jar를 사용하여 업데이트하는 것이이 문제를 일으키는 불행을 더 많이 낳는 반면, stream.body를 사용하는 URL은 거의이 문제를 야기하지 않습니다. Karussel의 대답은 상황을 개선했지만 전혀 해결하지 못하는 것 같습니다. 나는 Solr의 디자인 문제에서 오는 것이 아닌지 의심 스럽다. Hope Solr 4가이 문제를 해결했습니다. 또 하나는이 질문에 대한 답을 참조 할 수 있습니다 :이 진정한 및 간단한 가 스프링 부팅에 추가 할 필요가 않습니다 how-to-solve-the-lock-obtain-timed-out-when-using-solr-plainly