add response time cal

This commit is contained in:
Mengyi Zhou 2015-05-12 13:33:20 +08:00
parent 9ea9ba75fe
commit a4b3ccb333
3 changed files with 20 additions and 12 deletions

View file

@ -52,11 +52,11 @@ public class RollingTrafficStatus {
Map<String, Integer[]> reqStatusResult = new HashMap<>(); Map<String, Integer[]> reqStatusResult = new HashMap<>();
buckets.getAccumulatedStubStatus(stubStatusResult, reqStatusResult); buckets.getAccumulatedStubStatus(stubStatusResult, reqStatusResult);
extractStubStatus(stubStatusResult, trafficStatus); extractStubStatus(stubStatusResult, trafficStatus);
extractReqStatus(reqStatusResult, reqStatusResult.size(), trafficStatus); extractReqStatus(reqStatusResult, trafficStatus);
return trafficStatus; return trafficStatus;
} }
private static void extractReqStatus(Map<String, Integer[]> upstreamMap, int count, TrafficStatus trafficStatus) { private static void extractReqStatus(Map<String, Integer[]> upstreamMap, TrafficStatus trafficStatus) {
for (String key : upstreamMap.keySet()) { for (String key : upstreamMap.keySet()) {
Integer[] data = upstreamMap.get(key); Integer[] data = upstreamMap.get(key);
String[] hostUpstream = key.split("/"); String[] hostUpstream = key.split("/");
@ -67,11 +67,16 @@ public class RollingTrafficStatus {
if (hostUpstream.length > 1) if (hostUpstream.length > 1)
upstreamName = hostUpstream[1]; upstreamName = hostUpstream[1];
} }
Integer upRequests = data[ReqStatusOffset.UpstreamReq.ordinal()];
double upResponseTime = (upRequests == null || upRequests == 0) ? 0 : (double)data[ReqStatusOffset.UpstreamRt.ordinal()] / upRequests;
Integer requests = data[ReqStatusOffset.ReqTotal.ordinal()];
double responseTime = (requests == null || requests == 0) ? 0 : (double)data[ReqStatusOffset.RtTotal.ordinal()] / requests;
trafficStatus.addReqStatus(new ReqStatus().setHostName(hostName) trafficStatus.addReqStatus(new ReqStatus().setHostName(hostName)
.setTotalRequests(data[ReqStatusOffset.ReqTotal.ordinal()]) .setResponseTime(responseTime)
.setTotalRequests(requests)
.setUpName(upstreamName) .setUpName(upstreamName)
.setUpRequests(data[ReqStatusOffset.UpstreamReq.ordinal()]) .setUpRequests(upRequests)
.setUpResponseTime(data[ReqStatusOffset.UpstreamRt.ordinal()]) .setUpResponseTime(upResponseTime)
.setUpTries(data[ReqStatusOffset.UpstreamTries.ordinal()]) .setUpTries(data[ReqStatusOffset.UpstreamTries.ordinal()])
.setSuccessCount(data[ReqStatusOffset.SuccessCount.ordinal()]) .setSuccessCount(data[ReqStatusOffset.SuccessCount.ordinal()])
.setRedirectionCount(data[ReqStatusOffset.RedirectionCount.ordinal()]) .setRedirectionCount(data[ReqStatusOffset.RedirectionCount.ordinal()])
@ -81,11 +86,13 @@ public class RollingTrafficStatus {
} }
private static void extractStubStatus(Integer[] data, TrafficStatus trafficStatus) { private static void extractStubStatus(Integer[] data, TrafficStatus trafficStatus) {
Integer requests = data[StubStatusOffset.Requests.ordinal()];
double responseTime = (requests == null || requests == 0) ? 0.0 : (double)data[StubStatusOffset.RequestTime.ordinal()] / requests;
trafficStatus.setActiveConnections(data[StubStatusOffset.ActiveConn.ordinal()]) trafficStatus.setActiveConnections(data[StubStatusOffset.ActiveConn.ordinal()])
.setAccepts(data[StubStatusOffset.Accepts.ordinal()]) .setAccepts(data[StubStatusOffset.Accepts.ordinal()])
.setHandled(data[StubStatusOffset.Handled.ordinal()]) .setHandled(data[StubStatusOffset.Handled.ordinal()])
.setRequests(data[StubStatusOffset.Requests.ordinal()]) .setRequests(requests)
.setRequestTime(data[StubStatusOffset.RequestTime.ordinal()]) .setResponseTime(responseTime)
.setReading(data[StubStatusOffset.Reading.ordinal()]) .setReading(data[StubStatusOffset.Reading.ordinal()])
.setWriting(data[StubStatusOffset.Writing.ordinal()]) .setWriting(data[StubStatusOffset.Writing.ordinal()])
.setWaiting(data[StubStatusOffset.Waiting.ordinal()]); .setWaiting(data[StubStatusOffset.Waiting.ordinal()]);
@ -205,7 +212,6 @@ public class RollingTrafficStatus {
return result; return result;
} }
private class CircularArray implements Iterable<StatusPair> { private class CircularArray implements Iterable<StatusPair> {
private final LinkedList<StatusPair> buckets; private final LinkedList<StatusPair> buckets;
private final int length; private final int length;

View file

@ -56,7 +56,7 @@
<element name="accepts" value-type="int" /> <element name="accepts" value-type="int" />
<element name="handled" value-type="int" /> <element name="handled" value-type="int" />
<element name="requests" value-type="int" /> <element name="requests" value-type="int" />
<element name="request-time" value-type="int" /> <element name="response-time" value-type="double" />
<element name="reading" value-type="int" /> <element name="reading" value-type="int" />
<element name="writing" value-type="int" /> <element name="writing" value-type="int" />
<element name="waiting" value-type="int" /> <element name="waiting" value-type="int" />
@ -66,8 +66,9 @@
<element name="host-name" value-type="String" /> <element name="host-name" value-type="String" />
<element name="up-name" value-type="String" /> <element name="up-name" value-type="String" />
<element name="up-requests" value-type="int" /> <element name="up-requests" value-type="int" />
<element name="up-response-time" value-type="int" /> <element name="up-response-time" value-type="double" />
<element name="up-tries" value-type="int" /> <element name="up-tries" value-type="int" />
<element name="response-time" value-type="double" />
<element name="total-requests" value-type="int" /> <element name="total-requests" value-type="int" />
<element name="success-count" value-type="int" /> <element name="success-count" value-type="int" />
<element name="redirection-count" value-type="int" /> <element name="redirection-count" value-type="int" />

View file

@ -65,7 +65,7 @@
<accepts>6</accepts> <accepts>6</accepts>
<handled>6</handled> <handled>6</handled>
<requests>14</requests> <requests>14</requests>
<request-time>2</request-time> <response-time>2.88</response-time>
<reading>0</reading> <reading>0</reading>
<writing>1</writing> <writing>1</writing>
<waiting>1</waiting> <waiting>1</waiting>
@ -78,8 +78,9 @@
<host-name>ctrip.com</host-name> <host-name>ctrip.com</host-name>
<up-name>cluster</up-name> <up-name>cluster</up-name>
<up-requests>2</up-requests> <up-requests>2</up-requests>
<up-response-time>5</up-response-time> <up-response-time>5.685</up-response-time>
<up-tries>6</up-tries> <up-tries>6</up-tries>
<response-time>0.12</response-time>
<total-requests>14</total-requests> <total-requests>14</total-requests>
<success-count>1</success-count> <success-count>1</success-count>
<redirection-count>1</redirection-count> <redirection-count>1</redirection-count>