On 2/18/2014 11:51 AM, Allan Carroll wrote:
  I was thinking GC too, but it doesn’t feel like it is. Running jstat -gcutil 
only shows a 10-50ms parnew collection every 10 or 15 seconds and almost no 
full CMS collections. Anything other places to look for GC activity I might be 
missing?

I did a little investigation this morning and found that if I run a query once 
a second, every 10th query is slow. Looks suspiciously like the soft commits 
are causing the slow downs. I could make it further in between. Anything else I 
can look at to make those commits less costly?

It does indeed sound like the 10 second soft commit is the problem. The "opening a new searcher" part of a commit tends to be fairly expensive. The impact is even greater when combined with flushing data to disk, which is why soft commits can be faster than hard commits ... but building a new searcher is not cheap even then.

Do you have autoCommit configured, with openSearcher=false? If not, you should.

If you are using Solr caches, reducing (or eliminating) the autowarmCount values on each cache (particularly the filterCache) can make commits happen quite a lot faster. With a commit potentially happening every ten seconds, you might want to configure those caches so they are pretty small. Frequent commits mean that the caches are frequently invalidated. If commit frequency is high and autowarmCount values are low, a large cache is just a waste of memory. The cache config was the main thing I was interested in seeing when I asked for solrconfig.xml.

You have a lot of GC tuning going on, which is good - untuned GC and Solr do NOT get along. I'll just show you what I use and let you make your own decision.

http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning

Thanks,
Shawn

Reply via email to