You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by sy...@apache.org on 2020/06/08 12:46:51 UTC
[zookeeper] branch branch-3.6 updated: ZOOKEEPER-3856: Add a couple
metrics to track inflight diff syncs and snap syncs
This is an automated email from the ASF dual-hosted git repository.
symat pushed a commit to branch branch-3.6
in repository https://gitbox.apache.org/repos/asf/zookeeper.git
The following commit(s) were added to refs/heads/branch-3.6 by this push:
new 352fea2 ZOOKEEPER-3856: Add a couple metrics to track inflight diff syncs and snap syncs
352fea2 is described below
commit 352fea2964ee2784697ca690e2e40c6d980ba1eb
Author: Jie Huang <ji...@fb.com>
AuthorDate: Mon Jun 8 12:44:38 2020 +0000
ZOOKEEPER-3856: Add a couple metrics to track inflight diff syncs and snap syncs
There are useful metrics in a cluster with a large number of observes:
INFLIGHT_SNAP_COUNT
INFLIGHT_DIFF_COUNT
Author: Jie Huang <ji...@fb.com>
Reviewers: Enrico Olivelli <eo...@apache.org>, Mate Szalay-Beko <sy...@apache.org>
Closes #1374 from jhuan31/ZOOKEEPER-3856
(cherry picked from commit 501125588052827d92a90f8a56d07cbbbdad2fa7)
Signed-off-by: Mate Szalay-Beko <sy...@apache.org>
---
.../src/main/java/org/apache/zookeeper/server/ServerMetrics.java | 6 ++++++
.../java/org/apache/zookeeper/server/quorum/LearnerHandler.java | 7 +++++++
2 files changed, 13 insertions(+)
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java
index 4a10978..cee2205 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java
@@ -84,6 +84,9 @@ public final class ServerMetrics {
CONNECTION_TOKEN_DEFICIT = metricsContext.getSummary("connection_token_deficit", DetailLevel.BASIC);
CONNECTION_REJECTED = metricsContext.getCounter("connection_rejected");
+ INFLIGHT_SNAP_COUNT = metricsContext.getSummary("inflight_snap_count", DetailLevel.BASIC);
+ INFLIGHT_DIFF_COUNT = metricsContext.getSummary("inflight_diff_count", DetailLevel.BASIC);
+
WRITE_PER_NAMESPACE = metricsContext.getSummarySet("write_per_namespace", DetailLevel.BASIC);
READ_PER_NAMESPACE = metricsContext.getSummarySet("read_per_namespace", DetailLevel.BASIC);
@@ -290,6 +293,9 @@ public final class ServerMetrics {
public final Summary CONNECTION_TOKEN_DEFICIT;
public final Counter CONNECTION_REJECTED;
+ public final Summary INFLIGHT_SNAP_COUNT;
+ public final Summary INFLIGHT_DIFF_COUNT;
+
public final Counter UNRECOVERABLE_ERROR_COUNT;
public final SummarySet WRITE_PER_NAMESPACE;
public final SummarySet READ_PER_NAMESPACE;
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandler.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandler.java
index 3bab398..4a7def8 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandler.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandler.java
@@ -556,6 +556,7 @@ public class LearnerHandler extends ZooKeeperThread {
if (needSnap) {
syncThrottler = learnerMaster.getLearnerSnapSyncThrottler();
syncThrottler.beginSync(exemptFromThrottle);
+ ServerMetrics.getMetrics().INFLIGHT_SNAP_COUNT.add(syncThrottler.getSyncInProgress());
try {
long zxidToSend = learnerMaster.getZKDatabase().getDataTreeLastProcessedZxid();
oa.writeRecord(new QuorumPacket(Leader.SNAP, zxidToSend, null, null), "packet");
@@ -581,6 +582,7 @@ public class LearnerHandler extends ZooKeeperThread {
} else {
syncThrottler = learnerMaster.getLearnerDiffSyncThrottler();
syncThrottler.beginSync(exemptFromThrottle);
+ ServerMetrics.getMetrics().INFLIGHT_DIFF_COUNT.add(syncThrottler.getSyncInProgress());
ServerMetrics.getMetrics().DIFF_COUNT.add(1);
}
@@ -621,6 +623,11 @@ public class LearnerHandler extends ZooKeeperThread {
syncLimitCheck.start();
// sync ends when NEWLEADER-ACK is received
syncThrottler.endSync();
+ if (needSnap) {
+ ServerMetrics.getMetrics().INFLIGHT_SNAP_COUNT.add(syncThrottler.getSyncInProgress());
+ } else {
+ ServerMetrics.getMetrics().INFLIGHT_DIFF_COUNT.add(syncThrottler.getSyncInProgress());
+ }
syncThrottler = null;
// now that the ack has been processed expect the syncLimit