On Tue, Jun 15, 2010 at 4:58 PM, Jonathan Shook <jsh...@gmail.com> wrote: > If there aren't enough resources on the server side to service the > clients, the expectation should be that the servers have a graceful > performance degradation, or in the worst case throw an error specific > to resource exhaustion or explicit resource throttling. The fact that > Cassandra does some background processing complicates this a bit.
This is actually one of the most significant complications: graceful performance degradation can quickly lead to GC pauses long enough for a node to be marked down by the rest of the cluster. You could try to trade a lot of CPU for limited memory by tuning GC parameters to be _really_ aggressive, I suppose, but that doesn't strike me as a great strategy. The nature of distributed systems like this presents challenges simply not present (or even uglier) in centralized databases. I agree completely with the need to have the server engage in self-preserving activity should it start nearing limits, and to signal that change to clients and in logs. Definitely room for improvement, regardless of state of tune. b