in mqtt-common/src/main/java/org/apache/rocketmq/mqtt/common/util/StatUtil.java [101:139]
private static void printSecondInvokeStat() {
for (Map.Entry<String, Map<Long, SecondInvoke>> entry : secondInvokeCache.entrySet()) {
String key = entry.getKey();
Map<Long, SecondInvoke> secondInvokeMap = entry.getValue();
long totalPv = 0L;
long failPv = 0L;
long topSecondPv = 0L;
long sumRt = 0L;
long maxRt = 0L;
long minRt = 0L;
for (Map.Entry<Long, SecondInvoke> invokeEntry : secondInvokeMap.entrySet()) {
long second = invokeEntry.getKey();
SecondInvoke secondInvoke = invokeEntry.getValue();
if (nowSecond() - second >= STAT_WINDOW_SECONDS) {
secondInvokeMap.remove(second);
continue;
}
long secondPv = secondInvoke.total.get();
totalPv += secondPv;
failPv += secondInvoke.fail.get();
sumRt += secondInvoke.sumRt.get();
if (maxRt < secondInvoke.maxRt.get()) {
maxRt = secondInvoke.maxRt.get();
}
if (minRt > secondInvoke.minRt.get()) {
minRt = secondInvoke.minRt.get();
}
if (topSecondPv < secondPv) {
topSecondPv = secondPv;
}
}
if (secondInvokeMap.isEmpty()) {
secondInvokeCache.remove(key);
continue;
}
logger.warn("{}", buildLog(key, topSecondPv, totalPv, failPv, minRt, maxRt, sumRt));
}
}