Hi and thanks for looking at the problem ...

Mark Miller <markrmil...@gmail.com> wrote on 01/15/2009 02:58:24 PM:

> Mark Miller <markrmil...@gmail.com>
> 01/15/2009 02:58 PM
>
> Re: Help with Solr 1.3 lockups?
>
> How much RAM are you giving the JVM? Thats running out of memory loading
> a FieldCache, which can be a more memory intensive data structure. It
> pretty much points to the JVM not having enough RAM to do what you want.
> How many fields do you sort on? How many fields do you facet on? How
> much RAM do you have available and how much have you given Solr? How
> many documents are you working with?

I'm using the stock tomcat and JVM settings.  I see the VM footprint
sitting at 877M
right now.  It hasn't locked up yet this time around.

There are 2 fields we facet and 1 that we sort on.  The machine has 16G of
memory, and the
index is currently sitting at 38G, though I haven't run an optimize in a
while.  There are
about 1 million docs in the index, though we have 3 full copies of the data
stored in
different fields and processed in different ways.

I do a commit every 10 docs or 3 seconds, whichever comes first.  We're
approximating
real-time updating.

The index is currently sitting on NFS, which I know isn't great for
performance.  I didn't
think it could cause reliability issues though.


> As far as rebooting a failed server, the best technique is generally
> external. I would recommend a script/program on another machine that
> hits the Solr instance with a simple query every now and again. If you
> don't get a valid response within a reasonable amount of time, or after
> a reasonable number of tries, fire off alert emails and issue a command
> to that server to reboot the JVM. Or something to that effect.

I suspect I'll add a watchdog, no matter what's causing the problem here.

> However, you should figure out why you are running out of memory. You
> don't want to use more resources than you have available if you can help
it.

Definitely. That's on the agenda :-)

Thanks,
Jerry



> - Mark
>
> Jerome L Quinn wrote:
> > Hi, all.
> >
> > I'm running solr 1.3 inside Tomcat 6.0.18.  I'm running a modified
query
> > parser, tokenizer, highlighter, and have a CustomScoreQuery for dates.
> >
> > After some amount of time, I see solr stop responding to update
requests.
> > When crawling through the logs, I see the following pattern:
> >
> > Jan 12, 2009 7:27:42 PM org.apache.solr.update.DirectUpdateHandler2
commit
> > INFO: start commit(optimize=false,waitFlush=false,waitSearcher=true)
> > Jan 12, 2009 7:28:11 PM org.apache.solr.common.SolrException log
> > SEVERE: Error during auto-warming of
> >
>
key:org.apache.solr.search.queryresult...@ce0f92b9:java.lang.OutOfMemoryError

> >         at org.apache.lucene.index.TermBuffer.toTerm
(TermBuffer.java:122)
> >         at org.apache.lucene.index.SegmentTermEnum.term
> > (SegmentTermEnum.java:167)
> >         at org.apache.lucene.index.SegmentMergeInfo.next
> > (SegmentMergeInfo.java:66)
> >         at org.apache.lucene.index.MultiSegmentReader
$MultiTermEnum.next
> > (MultiSegmentReader.java:492)
> >         at org.apache.lucene.search.FieldCacheImpl$7.createValue
> > (FieldCacheImpl.java:267)
> >         at org.apache.lucene.search.FieldCacheImpl$Cache.get
> > (FieldCacheImpl.java:72)
> >         at org.apache.lucene.search.FieldCacheImpl.getInts
> > (FieldCacheImpl.java:245)
> >         at org.apache.solr.search.function.IntFieldSource.getValues
> > (IntFieldSource.java:50)
> >         at
org.apache.solr.search.function.SimpleFloatFunction.getValues
> > (SimpleFloatFunction.java:41)
> >         at org.apache.solr.search.function.BoostedQuery
$CustomScorer.<init>
> > (BoostedQuery.java:111)
> >         at org.apache.solr.search.function.BoostedQuery
$CustomScorer.<init>
> > (BoostedQuery.java:97)
> >         at org.apache.solr.search.function.BoostedQuery
> > $BoostedWeight.scorer(BoostedQuery.java:88)
> >         at org.apache.lucene.search.IndexSearcher.search
> > (IndexSearcher.java:132)
> >         at org.apache.lucene.search.Searcher.search(Searcher.java:126)
> >         at org.apache.lucene.search.Searcher.search(Searcher.java:105)
> >         at org.apache.solr.search.SolrIndexSearcher.getDocListNC
> > (SolrIndexSearcher.java:966)
> >         at org.apache.solr.search.SolrIndexSearcher.getDocListC
> > (SolrIndexSearcher.java:838)
> >         at org.apache.solr.search.SolrIndexSearcher.access$000
> > (SolrIndexSearcher.java:56)
> >         at org.apache.solr.search.SolrIndexSearcher$2.regenerateItem
> > (SolrIndexSearcher.java:260)
> >         at org.apache.solr.search.LRUCache.warm(LRUCache.java:194)
> > at org.apache.solr.search.SolrIndexSearcher.warm
> > (SolrIndexSearcher.java:1518)
> >         at org.apache.solr.core.SolrCore$3.call(SolrCore.java:1018)
> >         at java.util.concurrent.FutureTask$Sync.innerRun
> > (FutureTask.java:314)
> >         at java.util.concurrent.FutureTask.run(FutureTask.java:149)
> >         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask
> > (ThreadPoolExecutor.java:896)
> >         at java.util.concurrent.ThreadPoolExecutor$Worker.run
> > (ThreadPoolExecutor.java:918)
> >         at java.lang.Thread.run(Thread.java:735)
> >
> > Jan 12, 2009 7:28:11 PM org.apache.tomcat.util.net.JIoEndpoint$Acceptor
run
> > SEVERE: Socket accept failed
> > Throwable occurred: java.lang.OutOfMemoryError
> >         at java.net.PlainSocketImpl.socketAccept(Native Method)
> >         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:414)
> >         at java.net.ServerSocket.implAccept(ServerSocket.java:464)
> >         at java.net.ServerSocket.accept(ServerSocket.java:432)
> >         at
> > org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket
> > (DefaultServerSocketFactory.java:61)
> >         at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run
> > (JIoEndpoint.java:310)
> >         at java.lang.Thread.run(Thread.java:735)
> >
> > <<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>
> > << Java dumps core and heap at this point >>
> > <<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>
> >
> > Jan 12, 2009 7:28:21 PM org.apache.solr.common.SolrException log
> > SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain
> > timed out: SingleInstanceLock: write.lock
> >         at org.apache.lucene.store.Lock.obtain(Lock.java:85)
> >         at org.apache.lucene.index.IndexWriter.init
(IndexWriter.java:1140)
> >         at org.apache.lucene.index.IndexWriter.<init>
(IndexWriter.java:938)
> >         at org.apache.solr.update.SolrIndexWriter.<init>
> > (SolrIndexWriter.java:116)
> >         at org.apache.solr.update.UpdateHandler.createMainIndexWriter
> > (UpdateHandler.java:122)
> >         at org.apache.solr.update.DirectUpdateHandler2.openWriter
> > (DirectUpdateHandler2.java:167)
> >         at org.apache.solr.update.DirectUpdateHandler2.addDoc
> > (DirectUpdateHandler2.java:221)
> >         at
org.apache.solr.update.processor.RunUpdateProcessor.processAdd
> > (RunUpdateProcessorFactory.java:59)
> >         at
org.apache.solr.handler.XmlUpdateRequestHandler.processUpdate
> > (XmlUpdateRequestHandler.java:196)
> >         at
> > org.apache.solr.handler.XmlUpdateRequestHandler.handleRequestBody
> > (XmlUpdateRequestHandler.java:123)
> >         at org.apache.solr.handler.RequestHandlerBase.handleRequest
> > (RequestHandlerBase.java:131)
> >         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1204)
> >         at org.apache.solr.servlet.SolrDispatchFilter.execute
> > (SolrDispatchFilter.java:303)
> >         at org.apache.solr.servlet.SolrDispatchFilter.doFilter
> > (SolrDispatchFilter.java:232)
> >         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: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.connector.CoyoteAdapter.service
> > (CoyoteAdapter.java:286)
> >         at org.apache.coyote.http11.Http11Processor.process
> > (Http11Processor.java:845)
> >         at org.apache.coyote.http11.Http11Protocol
> > $Http11ConnectionHandler.process(Http11Protocol.java:583)
> >         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run
> > (JIoEndpoint.java:447)
> >         at java.lang.Thread.run(Thread.java:735)
> >
> >
> > After this, all future updates cause the same write lock failure.
> >
> > I'm willing to believe my code is somehow causing Solr to run out of
> > memory, though I'd like to know if anyone sees the problem on vanilla
Solr.
> >
> > An even bigger problem is the fact that once Solr is wedged, it stays
that
> > way until a human notices and restarts things.  The tomcat stays
running
> > and there's no automatic detection that will either restart Solr, or
> > restart the Tomcat container.
> >
> > Any suggestions on either front?
> >
> > Thanks,
> > Jerry Quinn
> >
> >
> >
>

Reply via email to