Luis, This will help you spot the source of the OOM: $ jps $ jmap -histo:live <pid from jps here> | head -20
Do that a few times while auto-warming is happening and you'll see what's growing. I'm assuming you are using java 1.6. Otis -- Lucene Consulting -- http://lucene-consulting.com/ ----- Original Message ---- From: Luis Neves <[EMAIL PROTECTED]> To: solr-user@lucene.apache.org Sent: Wednesday, July 25, 2007 12:55:31 PM Subject: OOM when autowarming is enabled Hello all. We are having some issues with one of our Solr instances when autowarming is enabled. The index has about 2.2M documents and 2GB of size, so it's not particularly big. Solr runs with "-Xmx1024M -Xms1024M". We are constantly inserting and updating the index, about 20 new/updated documents per minute, with a commit every 10 minutes. These are our cache settings: <filterCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="256"/> <queryResultCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="256"/> <documentCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0"/> When the autowarming is disabled there are no OOM errors, but the first search after a commit takes ~10 seconds and that is too long. I've enabled the "-XX:+HeapDumpOnOutOfMemoryError" flag. If this happen again I will be able to produce a headdump for analysis... meanwhile is there any setting that we can tweak that is easier on the memory and still manages to make the first search after a commit return in a reasonable time? Thanks! -- Luis Neves StackTrace: Error during auto-warming of key:[EMAIL PROTECTED]:java.lang.OutOfMemoryError: GC overhead limit exceeded at org.apache.lucene.index.TermBuffer.toTerm(TermBuffer.java:104) at org.apache.lucene.index.SegmentTermEnum.term(SegmentTermEnum.java:159) at org.apache.lucene.index.TermInfosReader.scanEnum(TermInfosReader.java:165) at org.apache.lucene.index.TermInfosReader.get(TermInfosReader.java:153) at org.apache.lucene.index.SegmentTermDocs.seek(SegmentTermDocs.java:54) at org.apache.lucene.index.MultiTermDocs.termDocs(MultiReader.java:429) at org.apache.lucene.index.MultiTermDocs.next(MultiReader.java:380) at org.apache.lucene.search.FieldCacheImpl$10.createValue(FieldCacheImpl.java:383) at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:72) at org.apache.lucene.search.FieldCacheImpl.getStringIndex(FieldCacheImpl.java:350) at org.apache.solr.search.function.ReverseOrdFieldSource.getValues(ReverseOrdFieldSource.java:56) at org.apache.solr.search.function.ReciprocalFloatFunction.getValues(ReciprocalFloatFunction.java:57) at org.apache.solr.search.function.LinearFloatFunction.getValues(LinearFloatFunction.java:49) at org.apache.solr.search.function.FunctionQuery$AllScorer.<init>(FunctionQuery.java:100) at org.apache.solr.search.function.FunctionQuery$FunctionWeight.scorer(FunctionQuery.java:78) at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(BooleanQuery.java:233) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:143) at org.apache.lucene.search.Searcher.search(Searcher.java:118) at org.apache.lucene.search.Searcher.search(Searcher.java:97) at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:888) at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:805) at org.apache.solr.search.SolrIndexSearcher.access$1(SolrIndexSearcher.java:709) at org.apache.solr.search.SolrIndexSearcher$2.regenerateItem(SolrIndexSearcher.java:251) at org.apache.solr.search.LRUCache.warm(LRUCache.java:193) at org.apache.solr.search.SolrIndexSearcher.warm(SolrIndexSearcher.java:1385) at org.apache.solr.core.SolrCore$1.call(SolrCore.java:488) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619)