[ 
https://issues.apache.org/jira/browse/CASSANDRA-17175?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Miklosovic updated CASSANDRA-17175:
------------------------------------------
    Description: 
There is a disconnect with latency clients experience and the latency reported 
by Cassandra. For example read latency only measures the latency of the 
StorageProxy::readRows call.

None of the time spent sitting in the Native Transport queue is measured. 
Neither is any of the time for writing the response back to the channel.

Dispatcher processRequest keeps track of when it first starts processing the 
request but best I can tell this is only used in tracking for timeouts.

It would be useful for tracking down cause of high client latency if there were 
more detailed Cassandra metrics around it.

I have attached a patch that adds latency tracking higher in the call stack. 
Starting timer from before it is put into the Native Transport Request 
executor. The patch gives 3 different metrics per Request type:

delay - measures time from when it is submitted to NTR pool until it call 
processRequest

process - time spent in the Dispatcher processRequest call

total - time from when first submitted to NTR pool until the response has been 
flushed

This patch may not be cleanest or best way of doing this but hopefully gives an 
idea of what I think would be useful addition that will help operators diagonse 
latency issues.

  was:
There is a disconnect with latency clients experience and the latency reported 
by Cassandra. For example read latency only measures the latency of the 
StorageProxy::readRows call.

None of the time spent sitting in the Native Transport queue is measured. 
Neither is any of the time for writing the response back to the channel.

Dispatcher processRequest keep track of when if first starts processing the 
request but best I can tell this is only used in tracking for timeouts.

It would be useful for tracking down cause of high client latency if there was 
more detailed cassandra metrics around it.

I have attached a patch that adds latency tracking higher in the call stack. 
Starting timer from before its put into the Native Transport Request executor. 
The patch gives 3 different metrics per Request type:

delay - measures time from when its submitted to NTR pool till it call 
processRequest

process - time spent in the Dispatcher processRequest call

total - time from when first submitted to NTR pool until the response has been 
flushed

 

This patch may not be cleanest or best way of doing this but hopefully gives an 
idea of what I think would be useful addition that will help operators diagonse 
latency issues.


> More detailed latency metrics
> -----------------------------
>
>                 Key: CASSANDRA-17175
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17175
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Observability/Metrics
>            Reporter: Cameron Zemek
>            Assignee: Stefan Miklosovic
>            Priority: Normal
>             Fix For: 4.x
>
>         Attachments: request_latency_metric.patch
>
>
> There is a disconnect with latency clients experience and the latency 
> reported by Cassandra. For example read latency only measures the latency of 
> the StorageProxy::readRows call.
> None of the time spent sitting in the Native Transport queue is measured. 
> Neither is any of the time for writing the response back to the channel.
> Dispatcher processRequest keeps track of when it first starts processing the 
> request but best I can tell this is only used in tracking for timeouts.
> It would be useful for tracking down cause of high client latency if there 
> were more detailed Cassandra metrics around it.
> I have attached a patch that adds latency tracking higher in the call stack. 
> Starting timer from before it is put into the Native Transport Request 
> executor. The patch gives 3 different metrics per Request type:
> delay - measures time from when it is submitted to NTR pool until it call 
> processRequest
> process - time spent in the Dispatcher processRequest call
> total - time from when first submitted to NTR pool until the response has 
> been flushed
> This patch may not be cleanest or best way of doing this but hopefully gives 
> an idea of what I think would be useful addition that will help operators 
> diagonse latency issues.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to