Repository: hbase Updated Branches: refs/heads/branch-2 3847def1c -> ad7e45381
HBASE-20450 Provide metrics for number of total active, priority and replication rpc handlers Signed-off-by: tedyu <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/ad7e4538 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/ad7e4538 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/ad7e4538 Branch: refs/heads/branch-2 Commit: ad7e453817b3fcf949ac683bf08b584f059c5bb7 Parents: 3847def Author: Nihal Jain <[email protected]> Authored: Thu Apr 19 14:05:13 2018 +0530 Committer: Andrew Purtell <[email protected]> Committed: Mon Jul 2 11:38:02 2018 -0700 ---------------------------------------------------------------------- .../hbase/ipc/MetricsHBaseServerSource.java | 8 ++++++- .../hbase/ipc/MetricsHBaseServerWrapper.java | 6 +++++ .../hbase/ipc/MetricsHBaseServerSourceImpl.java | 8 +++++++ .../hadoop/hbase/ipc/FifoRpcScheduler.java | 16 ++++++++++++- .../ipc/MetricsHBaseServerWrapperImpl.java | 24 ++++++++++++++++++++ .../apache/hadoop/hbase/ipc/RpcScheduler.java | 11 ++++++++- .../hadoop/hbase/ipc/SimpleRpcScheduler.java | 20 +++++++++++++--- .../hbase/ipc/DelegatingRpcScheduler.java | 15 ++++++++++++ .../ipc/MetricsHBaseServerWrapperStub.java | 15 ++++++++++++ .../apache/hadoop/hbase/ipc/TestRpcMetrics.java | 3 +++ 10 files changed, 120 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java index 0833751..d98837f 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java @@ -76,7 +76,13 @@ public interface MetricsHBaseServerSource extends ExceptionTrackingSource { String NUM_OPEN_CONNECTIONS_NAME = "numOpenConnections"; String NUM_OPEN_CONNECTIONS_DESC = "Number of open connections."; String NUM_ACTIVE_HANDLER_NAME = "numActiveHandler"; - String NUM_ACTIVE_HANDLER_DESC = "Number of active rpc handlers."; + String NUM_ACTIVE_HANDLER_DESC = "Total number of active rpc handlers."; + String NUM_ACTIVE_GENERAL_HANDLER_NAME = "numActiveGeneralHandler"; + String NUM_ACTIVE_GENERAL_HANDLER_DESC = "Number of active general rpc handlers."; + String NUM_ACTIVE_PRIORITY_HANDLER_NAME = "numActivePriorityHandler"; + String NUM_ACTIVE_PRIORITY_HANDLER_DESC = "Number of active priority rpc handlers."; + String NUM_ACTIVE_REPLICATION_HANDLER_NAME = "numActiveReplicationHandler"; + String NUM_ACTIVE_REPLICATION_HANDLER_DESC = "Number of active replication rpc handlers."; String NUM_ACTIVE_WRITE_HANDLER_NAME = "numActiveWriteHandler"; String NUM_ACTIVE_WRITE_HANDLER_DESC = "Number of active write rpc handlers."; String NUM_ACTIVE_READ_HANDLER_NAME = "numActiveReadHandler"; http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java index c80d1a9..c66ec59 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java @@ -35,6 +35,12 @@ public interface MetricsHBaseServerWrapper { int getActiveRpcHandlerCount(); + int getActiveGeneralRpcHandlerCount(); + + int getActivePriorityRpcHandlerCount(); + + int getActiveReplicationRpcHandlerCount(); + long getNumGeneralCallsDropped(); long getNumLifoModeSwitches(); http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java index a63f287..45f60c4 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java @@ -156,6 +156,14 @@ public class MetricsHBaseServerSourceImpl extends ExceptionTrackingSourceImpl NUM_OPEN_CONNECTIONS_DESC), wrapper.getNumOpenConnections()) .addGauge(Interns.info(NUM_ACTIVE_HANDLER_NAME, NUM_ACTIVE_HANDLER_DESC), wrapper.getActiveRpcHandlerCount()) + .addGauge(Interns.info(NUM_ACTIVE_GENERAL_HANDLER_NAME, NUM_ACTIVE_GENERAL_HANDLER_DESC), + wrapper.getActiveGeneralRpcHandlerCount()) + .addGauge( + Interns.info(NUM_ACTIVE_PRIORITY_HANDLER_NAME, NUM_ACTIVE_PRIORITY_HANDLER_DESC), + wrapper.getActivePriorityRpcHandlerCount()) + .addGauge( + Interns.info(NUM_ACTIVE_REPLICATION_HANDLER_NAME, NUM_ACTIVE_REPLICATION_HANDLER_DESC), + wrapper.getActiveReplicationRpcHandlerCount()) .addCounter(Interns.info(NUM_GENERAL_CALLS_DROPPED_NAME, NUM_GENERAL_CALLS_DROPPED_DESC), wrapper.getNumGeneralCallsDropped()) .addCounter(Interns.info(NUM_LIFO_MODE_SWITCHES_NAME, http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java index ce0f86d..bd8bdce 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java @@ -134,6 +134,21 @@ public class FifoRpcScheduler extends RpcScheduler { } @Override + public int getActiveGeneralRpcHandlerCount() { + return getActiveRpcHandlerCount(); + } + + @Override + public int getActivePriorityRpcHandlerCount() { + return 0; + } + + @Override + public int getActiveReplicationRpcHandlerCount() { + return 0; + } + + @Override public long getNumGeneralCallsDropped() { return 0; } @@ -204,5 +219,4 @@ public class FifoRpcScheduler extends RpcScheduler { return callQueueInfo; } - } http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java index 8753ebb..e7341c5 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java @@ -83,6 +83,30 @@ public class MetricsHBaseServerWrapperImpl implements MetricsHBaseServerWrapper } @Override + public int getActiveGeneralRpcHandlerCount() { + if (!isServerStarted() || this.server.getScheduler() == null) { + return 0; + } + return server.getScheduler().getActiveGeneralRpcHandlerCount(); + } + + @Override + public int getActivePriorityRpcHandlerCount() { + if (!isServerStarted() || this.server.getScheduler() == null) { + return 0; + } + return server.getScheduler().getActivePriorityRpcHandlerCount(); + } + + @Override + public int getActiveReplicationRpcHandlerCount() { + if (!isServerStarted() || this.server.getScheduler() == null) { + return 0; + } + return server.getScheduler().getActiveReplicationRpcHandlerCount(); + } + + @Override public long getNumGeneralCallsDropped() { if (!isServerStarted() || this.server.getScheduler() == null) { return 0; http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcScheduler.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcScheduler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcScheduler.java index bd088a7..be54e54 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcScheduler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcScheduler.java @@ -77,9 +77,18 @@ public abstract class RpcScheduler { /** Retrieves length of the replication queue for metrics. */ public abstract int getReplicationQueueLength(); - /** Retrieves the number of active handler. */ + /** Retrieves the total number of active handler. */ public abstract int getActiveRpcHandlerCount(); + /** Retrieves the number of active general handler. */ + public abstract int getActiveGeneralRpcHandlerCount(); + + /** Retrieves the number of active priority handler. */ + public abstract int getActivePriorityRpcHandlerCount(); + + /** Retrieves the number of active replication handler. */ + public abstract int getActiveReplicationRpcHandlerCount(); + /** * If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped * from general queue because RPC executor is under high load; returns 0 otherwise. http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java index 817163c..47c1498 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java @@ -185,9 +185,23 @@ public class SimpleRpcScheduler extends RpcScheduler implements ConfigurationObs @Override public int getActiveRpcHandlerCount() { - return callExecutor.getActiveHandlerCount() + - (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount()) + - (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount()); + return callExecutor.getActiveHandlerCount() + getActivePriorityRpcHandlerCount() + + getActiveReplicationRpcHandlerCount(); + } + + @Override + public int getActiveGeneralRpcHandlerCount() { + return callExecutor.getActiveHandlerCount(); + } + + @Override + public int getActivePriorityRpcHandlerCount() { + return (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount()); + } + + @Override + public int getActiveReplicationRpcHandlerCount() { + return (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount()); } @Override http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.java index 3dfae82..a90f4ba 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.java @@ -60,6 +60,21 @@ public class DelegatingRpcScheduler extends RpcScheduler { } @Override + public int getActiveGeneralRpcHandlerCount() { + return delegate.getActiveGeneralRpcHandlerCount(); + } + + @Override + public int getActivePriorityRpcHandlerCount() { + return delegate.getActivePriorityRpcHandlerCount(); + } + + @Override + public int getActiveReplicationRpcHandlerCount() { + return delegate.getActiveReplicationRpcHandlerCount(); + } + + @Override public boolean dispatch(CallRunner task) throws IOException, InterruptedException { return delegate.dispatch(task); } http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java index 3b787a9..748ee3d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java @@ -50,6 +50,21 @@ public class MetricsHBaseServerWrapperStub implements MetricsHBaseServerWrapper{ } @Override + public int getActiveGeneralRpcHandlerCount() { + return 201; + } + + @Override + public int getActivePriorityRpcHandlerCount() { + return 202; + } + + @Override + public int getActiveReplicationRpcHandlerCount() { + return 203; + } + + @Override public long getNumGeneralCallsDropped() { return 3; } http://git-wip-us.apache.org/repos/asf/hbase/blob/ad7e4538/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java index 74827b9..2f99d2b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcMetrics.java @@ -74,6 +74,9 @@ public class TestRpcMetrics { HELPER.assertGauge("numCallsInPriorityQueue", 104, serverSource); HELPER.assertGauge("numOpenConnections", 105, serverSource); HELPER.assertGauge("numActiveHandler", 106, serverSource); + HELPER.assertGauge("numActiveGeneralHandler", 201, serverSource); + HELPER.assertGauge("numActivePriorityHandler", 202, serverSource); + HELPER.assertGauge("numActiveReplicationHandler", 203, serverSource); HELPER.assertGauge("numActiveWriteHandler", 50, serverSource); HELPER.assertGauge("numActiveReadHandler", 50, serverSource); HELPER.assertGauge("numActiveScanHandler", 6, serverSource);
