The DynamicSnitch can result in less read operations been sent to a node, but 
as long as a node is marked as UP mutations are sent to all replicas. Nodes 
will shed load when they pull messages off the queue that have expired past 
rpc_timeout, but they will not feed back flow control to the other nodes. Other 
than going down or performing slow enough for the dynamic snitch to route reads 
around them.

There are also safety valves in there to reduce the size of the memtables and 
caches in response to low memory. Perhaps that process could also shed messages 
from thread pools with a high number of pending messages. 

**But** going OOM with 2M+ mutations in the thread pool sounds like the server 
was going down anyway. Did you look into why all the messages were there ? 

Cheers
 
-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 3/01/2012, at 11:18 PM, Віталій Тимчишин wrote:

> Hello.
> 
> We are using cassandra for some time in our project. Currently we are on 1.1 
> trunk (it was accidental migration, but since it's hard to migrate back and 
> it's performing nice enough we are currently on 1.1).
> During New Year holidays one of the servers've produces a number of OOM 
> messages in the log.
> According to heap dump taken, most of the memory is taken by MutationStage 
> queue (over 2millions of items).
> So, I am curious now if cassandra have any flow control for messages? We are 
> using Quorum for writes and it seems to me that one slow server may start 
> getting more messages than it can consume. The writes will still succeed 
> performed by other servers in the replication set.
> If there is no flow control, it should eventually get OOM. Is it the case? 
> Are there any plans to handle this?
> BTW: A lot of memory (~half) is taken by Inet4Address objects, so making a 
> cache of such objects would make this problem less possible. 
> 
> -- 
> Best regards,
>  Vitalii Tymchyshyn

Reply via email to