You were right. I've attached VisualVM to the process and forced a System.gc(): used memory went down to near 1.8gb.
So, i don't understand VisualVM dump reports. It said that all those char[] references have a SolrDispatchFilter instance as CG root. Another example (1M+ references with the exact same size 32792 [default buffer size]): https://dl.dropboxusercontent.com/u/4740964/solr_references.png Can you give any hint on how to read this kind of reference graph? Thanks! On Tue, Aug 20, 2013 at 7:20 PM, Samuel García Martínez < samuelgmarti...@gmail.com> wrote: > Thanks for the quick answer. > > We are experiencing slower indexing speed (x2/x2.5 time consumed) and the > memory consumed during this process oscilates between 10g (max allowed, so > JVM performs full gc's) and 8gb, but never goes under 8gb. > > I'll try your suggestions and see how it goes. > > Thanks! > El 20/08/2013 13:29, "Erick Erickson" <erickerick...@gmail.com> escribió: > > Hmmm, first time I've seen this, but are you seeing a problem >> or is this just a theoretical concern? There are some >> references that are held around until GC, these could be >> perfectly legitimate, unused but un-collected references. >> >> What I'd try before worrying much: >> 1> attach jconsole and press the GC button and see if lots of those >> go away. >> 2> _reduce_ the memory allocated to Solr and see if you can get by. >> In this case, reduce it to, say, 4G. If your memory consumption >> hits 4G and you continue running, you're probably seeing uncollected >> memory. >> >> Best >> Erick >> >> >> On Tue, Aug 20, 2013 at 4:24 AM, Samuel García Martínez < >> samuelgmarti...@gmail.com> wrote: >> >> > Hi all, we are facing a high memory usage in our Solr 3.6 master (not in >> > the slaves) even during "idle" (non indexing) periods. >> > >> > container: Tomcat 6.0.29 >> > maxthreads: 1.5k (i think this setting is wrong, 300 would be enough) >> > solr: solr 3.6.0 >> > setup: multitenant environment with 120+ cores and near 5M docs spread >> over >> > all indexes. >> > uptime: 100+ days >> > qps on this machine: 10 qps >> > used heap: 8gb >> > JVM params: >> > >> > >> -Djava.util.logging.config.file=/opt/opensearch/tomcat/conf/logging.properties >> > -Dmaster=true >> > -Dmaster.url="" >> > -Xms5G >> > -Xmx10G >> > -XX:MaxPermSize=256m >> > -XX:SurvivorRatio=5 >> > -XX:NewRatio=2 >> > -XX:+UseParNewGC >> > -XX:+UseConcMarkSweepGC >> > -Dcom.sun.management.jmxremote >> > -Dcom.sun.management.jmxremote.port=22222 >> > -Dcom.sun.management.jmxremote.authenticate=false >> > -Dcom.sun.management.jmxremote.ssl=false >> > -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager >> > -Djava.endorsed.dirs=/opt/opensearch/tomcat/endorsed >> > -Dcatalina.base=/opt/opensearch/tomcat >> > -Dcatalina.home=/opt/opensearch/tomcat >> > -Djava.io.tmpdir=/opt/opensearch/tomcat/temp >> > >> > >> > I think we have a high memory usage due to the next report: >> > char[] 3.1M instances 5.3Gb -----> this is what i'm talking about. >> > LinkedHashMap$Entry 2M instances 121Mb >> > String 1.48M 53Mb >> > >> > >> > Checking for "cg roots" at all these instances, i found that almost all >> > these references are contained in ISOLatin1AccentFilter.output -> >> > TokenStreamImpl - Map$Entry -> Map -> CloseableThreadLocal -> >> > TokenizerChain >> > >> > Do we had to add any CMS param to the JVM params? Or is this a memory >> leak >> > due to the ThreadLocal's? >> > >> > I verified that those char[] didn't belong to FieldCache.default, so >> this >> > high memory usage is not due the faceting and high cadinality values. >> > >> > PS: we reduced the number of threads and memory (and char[] instances) >> > decreased significantly. >> > -- >> > Un saludo, >> > Samuel García. >> > >> > -- Un saludo, Samuel García.