[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16089278#comment-16089278
 ] 

ASF GitHub Bot commented on ZOOKEEPER-2770:
-------------------------------------------

Github user eribeiro commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/307#discussion_r127618910
  
    --- Diff: 
src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java ---
    @@ -460,11 +464,21 @@ public void processRequest(Request request) {
                 if (request.type == OpCode.closeSession) {
                     cnxn.sendCloseSession();
                 }
    +            checkLatency(request);
             } catch (IOException e) {
                 LOG.error("FIXMSG",e);
             }
         }
     
    +    private void checkLatency(Request request) {
    +        long requestWarnThresholdMs = 
QuorumPeerConfig.getRequestWarnResponseThresholdMs();
    +        long requestLatency = Time.currentElapsedTime() - 
request.createTime;
    +        if((requestWarnThresholdMs > -1 && requestLatency > 
requestWarnThresholdMs) || requestWarnThresholdMs == 0) {
    +            LOG.warn("Request "  + request + " exceeded threshold. Took " 
+ requestLatency + " ms.");
    +            zks.serverStats().updateNumRequestsExceededThresholdTime();
    --- End diff --
    
    Cool! :) 
    
    nit: Two suggestions: to change the prefix from `update` to `inc` and use 
`numRequestsAboveThresholdTime()` (up to you both).


> ZooKeeper slow operation log
> ----------------------------
>
>                 Key: ZOOKEEPER-2770
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770
>             Project: ZooKeeper
>          Issue Type: Improvement
>            Reporter: Karan Mehta
>            Assignee: Karan Mehta
>         Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, 
> ZOOKEEPER-2770.003.patch
>
>
> ZooKeeper is a complex distributed application. There are many reasons why 
> any given read or write operation may become slow: a software bug, a protocol 
> problem, a hardware issue with the commit log(s), a network issue. If the 
> problem is constant it is trivial to come to an understanding of the cause. 
> However in order to diagnose intermittent problems we often don't know where, 
> or when, to begin looking. We need some sort of timestamped indication of the 
> problem. Although ZooKeeper is not a datastore, it does persist data, and can 
> suffer intermittent performance degradation, and should consider implementing 
> a 'slow query' log, a feature very common to services which persist 
> information on behalf of clients which may be sensitive to latency while 
> waiting for confirmation of successful persistence.
> Log the client and request details if the server discovers, when finally 
> processing the request, that the current time minus arrival time of the 
> request is beyond a configured threshold. 
> Look at the HBase {{responseTooSlow}} feature for inspiration. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to