HBASE-4215 RS requestsPerSecond counter seems to be off

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1162198 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2011-08-26 18:27:02 +00:00
parent 7b85e43c45
commit 389c621af6
6 changed files with 27 additions and 10 deletions

View File

@ -484,6 +484,7 @@ Release 0.90.5 - Unreleased
IMPROVEMENT
HBASE-4205 Enhance HTable javadoc (Eric Charles)
HBASE-4222 Make HLog more resilient to write pipeline failures
HBASE-4315 RS requestsPerSecond counter seems to be off (subramanian raghunathan)
Release 0.90.4 - August 10, 2011

View File

@ -198,7 +198,7 @@ org.apache.hadoop.hbase.HTableDescriptor;
<%java>
}
</%java>
<tr><th>Total: </th><td>servers: <% servers.size() %></td><td>&nbsp;</td><td>requests=<% totalRequests %>, regions=<% totalRegions %></td></tr>
<tr><th>Total: </th><td>servers: <% servers.size() %></td><td>&nbsp;</td><td>requestsPerSecond=<% totalRequests %>, numberOfOnlineRegions=<% totalRegions %></td></tr>
</table>
<p>Load is requests per second and count of regions loaded</p>

View File

@ -40,11 +40,15 @@ implements WritableComparable<HServerLoad> {
// Empty load instance.
public static final HServerLoad EMPTY_HSERVERLOAD = new HServerLoad();
/** Number of requests since last report
/** Number of requests per second since last report.
*/
// TODO: Instead build this up out of region counters.
private int numberOfRequests = 0;
/** Total Number of requests from the start of the region server.
*/
private int totalNumberOfRequests = 0;
/** the amount of used heap, in MB */
private int usedHeapMB = 0;
@ -367,12 +371,14 @@ implements WritableComparable<HServerLoad> {
* @param usedHeapMB
* @param maxHeapMB
*/
public HServerLoad(final int numberOfRequests, final int usedHeapMB,
final int maxHeapMB, final Map<byte[], RegionLoad> regionLoad) {
public HServerLoad(final int totalNumberOfRequests,
final int numberOfRequests, final int usedHeapMB, final int maxHeapMB,
final Map<byte[], RegionLoad> regionLoad) {
this.numberOfRequests = numberOfRequests;
this.usedHeapMB = usedHeapMB;
this.maxHeapMB = maxHeapMB;
this.regionLoad = regionLoad;
this.totalNumberOfRequests = totalNumberOfRequests;
}
/**
@ -380,7 +386,8 @@ implements WritableComparable<HServerLoad> {
* @param hsl the template HServerLoad
*/
public HServerLoad(final HServerLoad hsl) {
this(hsl.numberOfRequests, hsl.usedHeapMB, hsl.maxHeapMB, hsl.getRegionsLoad());
this(hsl.totalNumberOfRequests, hsl.numberOfRequests, hsl.usedHeapMB,
hsl.maxHeapMB, hsl.getRegionsLoad());
for (Map.Entry<byte[], RegionLoad> e : hsl.regionLoad.entrySet()) {
this.regionLoad.put(e.getKey(), e.getValue());
}
@ -456,12 +463,19 @@ implements WritableComparable<HServerLoad> {
}
/**
* @return the numberOfRequests
* @return the numberOfRequests per second.
*/
public int getNumberOfRequests() {
return numberOfRequests;
}
/**
* @return the numberOfRequests
*/
public int getTotalNumberOfRequests() {
return totalNumberOfRequests;
}
/**
* @return the amount of heap in use, in MB
*/
@ -538,6 +552,7 @@ implements WritableComparable<HServerLoad> {
rl.readFields(in);
regionLoad.put(rl.getName(), rl);
}
totalNumberOfRequests = in.readInt();
}
public void write(DataOutput out) throws IOException {
@ -549,6 +564,7 @@ implements WritableComparable<HServerLoad> {
out.writeInt(this.regionLoad.size());
for (RegionLoad rl: regionLoad.values())
rl.write(out);
out.writeInt(totalNumberOfRequests);
}
// Comparable

View File

@ -754,7 +754,7 @@ implements HMasterInterface, HMasterRegionInterface, MasterServices, Server {
this.serverManager.regionServerReport(new ServerName(sn), hsl);
if (hsl != null && this.metrics != null) {
// Up our metrics.
this.metrics.incrementRequests(hsl.getNumberOfRequests());
this.metrics.incrementRequests(hsl.getTotalNumberOfRequests());
}
}

View File

@ -765,7 +765,7 @@ public class HRegionServer implements HRegionInterface, HBaseRPCErrorHandler,
}
MemoryUsage memory =
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
return new HServerLoad(requestCount.get(),
return new HServerLoad(requestCount.get(),(int)metrics.getRequests(),
(int)(memory.getUsed() / 1024 / 1024),
(int) (memory.getMax() / 1024 / 1024), regionLoads);
}

View File

@ -364,8 +364,8 @@ public class RegionServerMetrics implements Updater {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb = Strings.appendKeyValue(sb, "requestsPerSecond",
Float.valueOf(this.requests.getPreviousIntervalValue()));
sb = Strings.appendKeyValue(sb, "requestsPerSecond", Integer
.valueOf((int) this.requests.getPreviousIntervalValue()));
sb = Strings.appendKeyValue(sb, "numberOfOnlineRegions",
Integer.valueOf(this.regions.get()));
sb = Strings.appendKeyValue(sb, "numberOfStores",