Thanks. It's definitely repeatable and I may spend some time plumbing this further. I'll let the list know if I find anything.
The problem went away once I optimized the index down to a single segment using a simple IndexWriter driver. This was a bit strange since the resulting index contained similarly large (> 23G) files. The JVM didn't seem to have any trouble MMap'ing those. No, I don't need (or necessarily want) to use compound index file formats. That was actually a goof on my part which I've since corrected :). On Fri, Sep 9, 2011 at 9:42 PM, Lance Norskog <goks...@gmail.com> wrote: > I remember now: by memory-mapping one block of address space that big, the > garbage collector has problems working around it. If the OOM is repeatable, > you could try watching the app with jconsole and watch the memory spaces. > > Lance > > On Thu, Sep 8, 2011 at 8:58 PM, Lance Norskog <goks...@gmail.com> wrote: > > > Do you need to use the compound format? > > > > On Thu, Sep 8, 2011 at 3:57 PM, Rich Cariens <richcari...@gmail.com > >wrote: > > > >> I should add some more context: > >> > >> 1. the problem index included several cfs segment files that were > around > >> 4.7G, and > >> 2. I'm running four SOLR instances on the same box, all of which have > >> similiar problem indeces. > >> > >> A colleague thought perhaps I was bumping up against my 256,000 open > files > >> ulimit. Do the MultiMMapIndexInput ByteBuffer arrays each consume a file > >> handle/descriptor? > >> > >> On Thu, Sep 8, 2011 at 5:19 PM, Rich Cariens <richcari...@gmail.com> > >> wrote: > >> > >> > FWiW I optimized the index down to a single segment and now I have no > >> > trouble opening an MMapDirectory on that index, even though the 23G > cfx > >> > segment file remains. > >> > > >> > > >> > On Thu, Sep 8, 2011 at 4:27 PM, Rich Cariens <richcari...@gmail.com > >> >wrote: > >> > > >> >> Thanks for the response. "free -g" reports: > >> >> > >> >> total used free shared buffers > >> >> cached > >> >> Mem: 141 95 46 0 > >> >> 0 93 > >> >> -/+ buffers/cache: 2 139 > >> >> Swap: 3 0 3 > >> >> > >> >> 2011/9/7 François Schiettecatte <fschietteca...@gmail.com> > >> >> > >> >>> My memory of this is a little rusty but isn't mmap also limited by > mem > >> + > >> >>> swap on the box? What does 'free -g' report? > >> >>> > >> >>> François > >> >>> > >> >>> On Sep 7, 2011, at 12:25 PM, Rich Cariens wrote: > >> >>> > >> >>> > Ahoy ahoy! > >> >>> > > >> >>> > I've run into the dreaded OOM error with MMapDirectory on a 23G > cfs > >> >>> compound > >> >>> > index segment file. The stack trace looks pretty much like every > >> other > >> >>> trace > >> >>> > I've found when searching for OOM & "map failed"[1]. My > >> configuration > >> >>> > follows: > >> >>> > > >> >>> > Solr 1.4.1/Lucene 2.9.3 (plus > >> >>> > SOLR-1969<https://issues.apache.org/jira/browse/SOLR-1969> > >> >>> > ) > >> >>> > CentOS 4.9 (Final) > >> >>> > Linux 2.6.9-100.ELsmp x86_64 yada yada yada > >> >>> > Java SE (build 1.6.0_21-b06) > >> >>> > Hotspot 64-bit Server VM (build 17.0-b16, mixed mode) > >> >>> > ulimits: > >> >>> > core file size (blocks, -c) 0 > >> >>> > data seg size (kbytes, -d) unlimited > >> >>> > file size (blocks, -f) unlimited > >> >>> > pending signals (-i) 1024 > >> >>> > max locked memory (kbytes, -l) 32 > >> >>> > max memory size (kbytes, -m) unlimited > >> >>> > open files (-n) 256000 > >> >>> > pipe size (512 bytes, -p) 8 > >> >>> > POSIX message queues (bytes, -q) 819200 > >> >>> > stack size (kbytes, -s) 10240 > >> >>> > cpu time (seconds, -t) unlimited > >> >>> > max user processes (-u) 1064959 > >> >>> > virtual memory (kbytes, -v) unlimited > >> >>> > file locks (-x) unlimited > >> >>> > > >> >>> > Any suggestions? > >> >>> > > >> >>> > Thanks in advance, > >> >>> > Rich > >> >>> > > >> >>> > [1] > >> >>> > ... > >> >>> > java.io.IOException: Map failed > >> >>> > at sun.nio.ch.FileChannelImpl.map(Unknown Source) > >> >>> > at > >> org.apache.lucene.store.MMapDirectory$MMapIndexInput.<init>(Unknown > >> >>> > Source) > >> >>> > at > >> org.apache.lucene.store.MMapDirectory$MMapIndexInput.<init>(Unknown > >> >>> > Source) > >> >>> > at org.apache.lucene.store.MMapDirectory.openInput(Unknown Source) > >> >>> > at > org.apache.lucene.index.SegmentReader$CoreReaders.<init>(Unknown > >> >>> Source) > >> >>> > > >> >>> > at org.apache.lucene.index.SegmentReader.get(Unknown Source) > >> >>> > at org.apache.lucene.index.SegmentReader.get(Unknown Source) > >> >>> > at org.apache.lucene.index.DirectoryReader.<init>(Unknown Source) > >> >>> > at org.apache.lucene.index.ReadOnlyDirectoryReader.<init>(Unknown > >> >>> Source) > >> >>> > at org.apache.lucene.index.DirectoryReader$1.doBody(Unknown > Source) > >> >>> > at > org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(Unknown > >> >>> > Source) > >> >>> > at org.apache.lucene.index.DirectoryReader.open(Unknown Source) > >> >>> > at org.apache.lucene.index.IndexReader.open(Unknown Source) > >> >>> > ... > >> >>> > Caused by: java.lang.OutOfMemoryError: Map failed > >> >>> > at sun.nio.ch.FileChannelImpl.map0(Native Method) > >> >>> > ... > >> >>> > >> >>> > >> >> > >> > > >> > > > > > > > > -- > > Lance Norskog > > goks...@gmail.com > > > > > > > -- > Lance Norskog > goks...@gmail.com >