From a4b3ccb33372f0f5d7a5d65723e8f3ead00f941e Mon Sep 17 00:00:00 2001 From: Mengyi Zhou Date: Tue, 12 May 2015 13:33:20 +0800 Subject: [PATCH] add response time cal --- .../ctrip/zeus/util/RollingTrafficStatus.java | 22 ++++++++++++------- .../META-INF/dal/model/nginx-codegen.xml | 5 +++-- .../resources/com/ctrip/zeus/model/nginx.xml | 5 +++-- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/ctrip/zeus/util/RollingTrafficStatus.java b/src/main/java/com/ctrip/zeus/util/RollingTrafficStatus.java index 3dc460a7..a255655a 100644 --- a/src/main/java/com/ctrip/zeus/util/RollingTrafficStatus.java +++ b/src/main/java/com/ctrip/zeus/util/RollingTrafficStatus.java @@ -52,11 +52,11 @@ public class RollingTrafficStatus { Map reqStatusResult = new HashMap<>(); buckets.getAccumulatedStubStatus(stubStatusResult, reqStatusResult); extractStubStatus(stubStatusResult, trafficStatus); - extractReqStatus(reqStatusResult, reqStatusResult.size(), trafficStatus); + extractReqStatus(reqStatusResult, trafficStatus); return trafficStatus; } - private static void extractReqStatus(Map upstreamMap, int count, TrafficStatus trafficStatus) { + private static void extractReqStatus(Map upstreamMap, TrafficStatus trafficStatus) { for (String key : upstreamMap.keySet()) { Integer[] data = upstreamMap.get(key); String[] hostUpstream = key.split("/"); @@ -67,11 +67,16 @@ public class RollingTrafficStatus { if (hostUpstream.length > 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) - .setTotalRequests(data[ReqStatusOffset.ReqTotal.ordinal()]) + .setResponseTime(responseTime) + .setTotalRequests(requests) .setUpName(upstreamName) - .setUpRequests(data[ReqStatusOffset.UpstreamReq.ordinal()]) - .setUpResponseTime(data[ReqStatusOffset.UpstreamRt.ordinal()]) + .setUpRequests(upRequests) + .setUpResponseTime(upResponseTime) .setUpTries(data[ReqStatusOffset.UpstreamTries.ordinal()]) .setSuccessCount(data[ReqStatusOffset.SuccessCount.ordinal()]) .setRedirectionCount(data[ReqStatusOffset.RedirectionCount.ordinal()]) @@ -81,11 +86,13 @@ public class RollingTrafficStatus { } 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()]) .setAccepts(data[StubStatusOffset.Accepts.ordinal()]) .setHandled(data[StubStatusOffset.Handled.ordinal()]) - .setRequests(data[StubStatusOffset.Requests.ordinal()]) - .setRequestTime(data[StubStatusOffset.RequestTime.ordinal()]) + .setRequests(requests) + .setResponseTime(responseTime) .setReading(data[StubStatusOffset.Reading.ordinal()]) .setWriting(data[StubStatusOffset.Writing.ordinal()]) .setWaiting(data[StubStatusOffset.Waiting.ordinal()]); @@ -205,7 +212,6 @@ public class RollingTrafficStatus { return result; } - private class CircularArray implements Iterable { private final LinkedList buckets; private final int length; diff --git a/src/main/resources/META-INF/dal/model/nginx-codegen.xml b/src/main/resources/META-INF/dal/model/nginx-codegen.xml index c78ba986..bf72a416 100644 --- a/src/main/resources/META-INF/dal/model/nginx-codegen.xml +++ b/src/main/resources/META-INF/dal/model/nginx-codegen.xml @@ -56,7 +56,7 @@ - + @@ -66,8 +66,9 @@ - + + diff --git a/src/test/resources/com/ctrip/zeus/model/nginx.xml b/src/test/resources/com/ctrip/zeus/model/nginx.xml index 7cbc7d0b..913d432b 100644 --- a/src/test/resources/com/ctrip/zeus/model/nginx.xml +++ b/src/test/resources/com/ctrip/zeus/model/nginx.xml @@ -65,7 +65,7 @@ 6 6 14 - 2 + 2.88 0 1 1 @@ -78,8 +78,9 @@ ctrip.com cluster 2 - 5 + 5.685 6 + 0.12 14 1 1