For throughput with G1, get rid of the pause time goal (-XX:MaxGCPauseMillis), so the GC can pause as long as it wants.
Beyond that, use a non-concurrent collector and make sure that everything is OK with pauses that last a few seconds. This is a pretty detailed paper about balancing throughput and pause: https://engineering.linkedin.com/garbage-collection/garbage-collection-optimization-high-throughput-and-low-latency-java-applications wunder Walter Underwood wun...@wunderwood.org http://observer.wunderwood.org/ On Jan 8, 2015, at 11:38 PM, Shawn Heisey <apa...@elyograg.org> wrote: > On 1/8/2015 11:05 PM, Boogie Shafer wrote: >> In the abstract, it sounds like you are seeing the difference between tuning >> for latency vs tuning for throughput >> >> My hunch would be you are seeing more (albeit individually quicker) GC >> events with your new settings during the rebuild >> >> I imagine that in most cases a solr rebuild is relatively rare compared to >> the amount of times where a lower latency request is desired. If the rebuild >> times are problematic for you, use tunings specific to that workload during >> the times you need it and then switch back to your low latency settings >> after. If you are doing that you can probably run with a bigger heap >> temporarily during the rebuild as you aren't likely to be fielding queries >> and don't benefit from having a larger OS cache available > > Full rebuilds are indeed relatively rare. Avoiding long pauses and > keeping query latency low are usually a lot more important than how > quickly the index rebuilds. Quick rebuilds are nice, but not strictly > necessary. > > We do incremental updates that start at the top of every minute, unless > an update is already running. Exactly how long those updates take is of > little importance, unless that time is easier to measure in minutes > rather than seconds. > > If I ever find myself in a situation where completing a rebuild as fast > as possible becomes extremely important, does anyone have suggestions > for GC tuning options that will optimize for throughput? > > Thanks, > Shawn >