Thanks Aaron for the great information as always. I just checked cfhistograms 
and only a handful of read latency are bigger than 100ms, but for 
proxyhistograms there are 10 times more are greater than 100ms. We are using 
QUORUM  for reading with RF=3, and I understand coordinator needs to get the 
digest from other nodes and read repair on the miss match etc. But is it normal 
to see the latency from proxyhistograms to go beyond 100ms? Is there anyway to 
improve that? 
We are tracking the metrics from Client side and we see the 95th percentile 
response time averages at 40ms which is a bit high. Our 50th percentile was 
great under 3ms. 

Any suggestion is very much appreciated.

Thanks.
-Wei

----- Original Message -----
From: "aaron morton" <aa...@thelastpickle.com>
To: "Cassandra User" <user@cassandra.apache.org>
Sent: Thursday, February 21, 2013 9:20:49 AM
Subject: Re: Mutation dropped

> What does rpc_timeout control? Only the reads/writes? 
Yes. 

> like data stream,
streaming_socket_timeout_in_ms in the yaml

> merkle tree request? 
Either no time out or a number of days, cannot remember which right now. 

> What is the side effect if it's set to a really small number, say 20ms?
You will probably get a lot more requests that fail with a TimedOutException. 

rpc_timeout needs to be longer than the time it takes a node to process the 
message, and the time it takes the coordinator to do it's thing. You can look 
at cfhistograms and proxyhistograms to get a better idea of how long a request 
takes in your system.  
  
Cheers

-----------------
Aaron Morton
Freelance Cassandra Developer
New Zealand

@aaronmorton
http://www.thelastpickle.com

On 21/02/2013, at 6:56 AM, Wei Zhu <wz1...@yahoo.com> wrote:

> What does rpc_timeout control? Only the reads/writes? How about other 
> inter-node communication, like data stream, merkle tree request?  What is the 
> reasonable value for roc_timeout? The default value of 10 seconds are way too 
> long. What is the side effect if it's set to a really small number, say 20ms?
> 
> Thanks.
> -Wei
> 
> From: aaron morton <aa...@thelastpickle.com>
> To: user@cassandra.apache.org 
> Sent: Tuesday, February 19, 2013 7:32 PM
> Subject: Re: Mutation dropped
> 
>> Does the rpc_timeout not control the client timeout ?
> No it is how long a node will wait for a response from other nodes before 
> raising a TimedOutException if less than CL nodes have responded. 
> Set the client side socket timeout using your preferred client. 
> 
>> Is there any param which is configurable to control the replication timeout 
>> between nodes ?
> There is no such thing.
> rpc_timeout is roughly like that, but it's not right to think about it that 
> way. 
> i.e. if a message to a replica times out and CL nodes have already responded 
> then we are happy to call the request complete. 
> 
> Cheers
> 
>  
> -----------------
> Aaron Morton
> Freelance Cassandra Developer
> New Zealand
> 
> @aaronmorton
> http://www.thelastpickle.com
> 
> On 19/02/2013, at 1:48 AM, Kanwar Sangha <kan...@mavenir.com> wrote:
> 
>> Thanks Aaron.
>>  
>> Does the rpc_timeout not control the client timeout ? Is there any param 
>> which is configurable to control the replication timeout between nodes ? Or 
>> the same param is used to control that since the other node is also like a 
>> client ?
>>  
>>  
>>  
>> From: aaron morton [mailto:aa...@thelastpickle.com] 
>> Sent: 17 February 2013 11:26
>> To: user@cassandra.apache.org
>> Subject: Re: Mutation dropped
>>  
>> You are hitting the maximum throughput on the cluster. 
>>  
>> The messages are dropped because the node fails to start processing them 
>> before rpc_timeout. 
>>  
>> However the request is still a success because the client requested CL was 
>> achieved. 
>>  
>> Testing with RF 2 and CL 1 really just tests the disks on one local machine. 
>> Both nodes replicate each row, and writes are sent to each replica, so the 
>> only thing the client is waiting on is the local node to write to it's 
>> commit log. 
>>  
>> Testing with (and running in prod) RF3 and CL QUROUM is a more real world 
>> scenario. 
>>  
>> Cheers
>>  
>> -----------------
>> Aaron Morton
>> Freelance Cassandra Developer
>> New Zealand
>>  
>> @aaronmorton
>> http://www.thelastpickle.com
>>  
>> On 15/02/2013, at 9:42 AM, Kanwar Sangha <kan...@mavenir.com> wrote:
>> 
>> 
>> Hi – Is there a parameter which can be tuned to prevent the mutations from 
>> being dropped ? Is this logic correct ?
>>  
>> Node A and B with RF=2, CL =1. Load balanced between the two.
>>  
>> --  Address           Load       Tokens  Owns (effective)  Host ID           
>>                     Rack
>> UN  10.x.x.x       746.78 GB  256     100.0%            
>> dbc9e539-f735-4b0b-8067-b97a85522a1a  rack1
>> UN  10.x.x.x       880.77 GB  256     100.0%            
>> 95d59054-be99-455f-90d1-f43981d3d778  rack1
>>  
>> Once we hit a very high TPS (around 50k/sec of inserts), the nodes start 
>> falling behind and we see the mutation dropped messages. But there are no 
>> failures on the client. Does that mean other node is not able to persist the 
>> replicated data ? Is there some timeout associated with replicated data 
>> persistence ?
>>  
>> Thanks,
>> Kanwar
>>  
>>  
>>  
>>  
>>  
>>  
>>  
>> From: Kanwar Sangha [mailto:kan...@mavenir.com] 
>> Sent: 14 February 2013 09:08
>> To: user@cassandra.apache.org
>> Subject: Mutation dropped
>>  
>> Hi – I am doing a load test using YCSB across 2 nodes in a cluster and 
>> seeing a lot of mutation dropped messages.  I understand that this is due to 
>> the replica not being written to the
>> other node ? RF = 2, CL =1.
>>  
>> From the wiki -
>> For MUTATION messages this means that the mutation was not applied to all 
>> replicas it was sent to. The inconsistency will be repaired by Read Repair 
>> or Anti Entropy Repair
>>  
>> Thanks,
>> Kanwar
>>  
> 
> 
> 


Reply via email to