Repository: hbase Updated Branches: refs/heads/0.98 d019e37fb -> ae0ecedab refs/heads/branch-1 d3c9425c9 -> eb34c956a refs/heads/master 69f685e7c -> 22f29ca8e
HBASE-12496 A blockedRequestsCount metric (Yi Deng) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/22f29ca8 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/22f29ca8 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/22f29ca8 Branch: refs/heads/master Commit: 22f29ca8efe910540f2912ec35fe307daf5eed0a Parents: 69f685e Author: Andrew Purtell <[email protected]> Authored: Tue Nov 18 14:14:31 2014 -0800 Committer: Andrew Purtell <[email protected]> Committed: Tue Nov 18 14:14:31 2014 -0800 ---------------------------------------------------------------------- .../hbase/regionserver/MetricsRegionServerSource.java | 4 ++++ .../hbase/regionserver/MetricsRegionServerWrapper.java | 5 +++++ .../regionserver/MetricsRegionServerSourceImpl.java | 3 +++ .../org/apache/hadoop/hbase/regionserver/HRegion.java | 13 ++++++++++++- .../regionserver/MetricsRegionServerWrapperImpl.java | 9 +++++++++ .../regionserver/MetricsRegionServerWrapperStub.java | 5 +++++ 6 files changed, 38 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/22f29ca8/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java index 7ac2501..b27696c 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java @@ -252,6 +252,10 @@ public interface MetricsRegionServerSource extends BaseSource { String HEDGED_READ_WINS_DESC = "The number of times we started a hedged read and a hedged read won"; + String BLOCKED_REQUESTS_COUNT = "blockedRequestCount"; + String BLOCKED_REQUESTS_COUNT_DESC = "The number of blocked requests because of memstore size is " + + "larger than blockingMemStoreSize"; + String SPLIT_KEY = "splitTime"; String FLUSH_KEY = "flushTime"; } http://git-wip-us.apache.org/repos/asf/hbase/blob/22f29ca8/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java index e0b5e1b..0f62dc6 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java @@ -256,4 +256,9 @@ public interface MetricsRegionServerWrapper { * @return Count of times a hedged read beat out the primary read. */ public long getHedgedReadWins(); + + /** + * @return Count of requests blocked because the memstore size is larger than blockingMemStoreSize + */ + public long getBlockedRequestsCount(); } http://git-wip-us.apache.org/repos/asf/hbase/blob/22f29ca8/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java index d3414e2..4cd83382 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java @@ -237,6 +237,9 @@ public class MetricsRegionServerSourceImpl .addCounter(Interns.info(HEDGED_READ_WINS, HEDGED_READ_WINS_DESC), rsWrap.getHedgedReadWins()) + .addCounter(Interns.info(BLOCKED_REQUESTS_COUNT, BLOCKED_REQUESTS_COUNT_DESC), + rsWrap.getBlockedRequestsCount()) + .tag(Interns.info(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC), rsWrap.getZookeeperQuorum()) .tag(Interns.info(SERVER_NAME_NAME, SERVER_NAME_DESC), rsWrap.getServerName()) http://git-wip-us.apache.org/repos/asf/hbase/blob/22f29ca8/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index d6a0731..1615a25 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -287,6 +287,16 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { // final Counter readRequestsCount = new Counter(); final Counter writeRequestsCount = new Counter(); + // Number of requests blocked by memstore size. + private final Counter blockedRequestsCount = new Counter(); + + /** + * @return the number of blocked requests count. + */ + public long getBlockedRequestsCount() { + return this.blockedRequestsCount.get(); + } + // Compaction counters final AtomicLong compactionsFinished = new AtomicLong(0L); final AtomicLong compactionNumFilesCompacted = new AtomicLong(0L); @@ -3121,6 +3131,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { // if (this.getRegionInfo().isMetaRegion()) return; if (this.memstoreSize.get() > this.blockingMemStoreSize) { + blockedRequestsCount.increment(); requestFlush(); throw new RegionTooBusyException("Above memstore limit, " + "regionName=" + (this.getRegionInfo() == null ? "unknown" : @@ -5769,7 +5780,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { // public static final long FIXED_OVERHEAD = ClassSize.align( ClassSize.OBJECT + ClassSize.ARRAY + - 41 * ClassSize.REFERENCE + 2 * Bytes.SIZEOF_INT + + 42 * ClassSize.REFERENCE + 2 * Bytes.SIZEOF_INT + (12 * Bytes.SIZEOF_LONG) + 4 * Bytes.SIZEOF_BOOLEAN); http://git-wip-us.apache.org/repos/asf/hbase/blob/22f29ca8/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java index 52eafb9..d8ad6fe 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java @@ -76,6 +76,7 @@ class MetricsRegionServerWrapperImpl private volatile long flushedCellsSize = 0; private volatile long compactedCellsSize = 0; private volatile long majorCompactedCellsSize = 0; + private volatile long blockedRequestsCount = 0L; private CacheStats cacheStats; private ScheduledExecutorService executor; @@ -441,6 +442,7 @@ class MetricsRegionServerWrapperImpl long tempFlushedCellsSize = 0; long tempCompactedCellsSize = 0; long tempMajorCompactedCellsSize = 0; + long tempBlockedRequestsCount = 0L; for (HRegion r : regionServer.getOnlineRegionsLocalContext()) { tempNumMutationsWithoutWAL += r.numMutationsWithoutWAL.get(); @@ -449,6 +451,7 @@ class MetricsRegionServerWrapperImpl tempWriteRequestsCount += r.writeRequestsCount.get(); tempCheckAndMutateChecksFailed += r.checkAndMutateChecksFailed.get(); tempCheckAndMutateChecksPassed += r.checkAndMutateChecksPassed.get(); + tempBlockedRequestsCount += r.getBlockedRequestsCount(); tempNumStores += r.stores.size(); for (Store store : r.stores.values()) { tempNumStoreFiles += store.getStorefilesCount(); @@ -515,6 +518,7 @@ class MetricsRegionServerWrapperImpl flushedCellsSize = tempFlushedCellsSize; compactedCellsSize = tempCompactedCellsSize; majorCompactedCellsSize = tempMajorCompactedCellsSize; + blockedRequestsCount = tempBlockedRequestsCount; } } @@ -527,4 +531,9 @@ class MetricsRegionServerWrapperImpl public long getHedgedReadWins() { return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadWins(); } + + @Override + public long getBlockedRequestsCount() { + return blockedRequestsCount; + } } http://git-wip-us.apache.org/repos/asf/hbase/blob/22f29ca8/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java index 58c61c6..e936789 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java @@ -250,4 +250,9 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe public long getHedgedReadWins() { return 10; } + + @Override + public long getBlockedRequestsCount() { + return 0; + } }
