> I'm working on getting our latency as consistent as possible, and the gc > likes to kick off 60+ms periods of unavailability for a node, which for my > application leads to a reasonable number of timed out requests. Outside of > the gc event, we get good responses. > > I'm happy with reduced throughput for shorter pauses, so I'm going to do the > standard jvm gc tuning guide[0] for short pauses, curious if anyone else has > gone down this path and gotten gc pauses consistent and low or if what's in > bin/cassandra.in.sh is basically the best I should expect. (Anyone tried > jrockit?)
If your situation is such that you are willing to use the unreleased JDK 1.7 and G1GC (still being marked as experimental and may still be a stability concern and since we are talking about storing data that probably means conservatism is called for) you can try that. It offers some more direct control over the target GC pause times, although does not provide guarantees. A potential starting point of VM options may be: -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=15 And maybe: -XX:G1ConfidencePercent=100 And maybe (not sure of current status but there used to be a known bug when enabled): -XX:+G1ParallelRSetUpdatingEnabled -XX:+G1ParallelRSetScanningEnabled -- / Peter Schuller aka scode