diff --git a/pom.xml b/pom.xml index 0ed5aa39e..1e5f5bfa0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ liteflow jar 4.0.0 - 1.2.20 + 1.2.20-SNAPSHOT UTF-8 diff --git a/src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java b/src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java index 9c7e06808..8e6d1768b 100644 --- a/src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java +++ b/src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java @@ -11,13 +11,19 @@ package com.thebeastshop.liteflow.monitor; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.TimerTask; import java.util.Map.Entry; import java.util.Timer; import java.util.concurrent.ConcurrentHashMap; +import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +45,7 @@ public class MonitorBus { public void run() { MonitorBus.printStatistics(); } - }, 5*60*1000L, 5*60*1000L); + }, 1*60*1000L, 5*60*1000L); } public static void addStatistics(CompStatistics statistics){ @@ -68,19 +74,40 @@ public class MonitorBus { compAverageTimeSpent.put(entry.getKey(), new BigDecimal(totalTimeSpent).divide(new BigDecimal(entry.getValue().size()), 2, RoundingMode.HALF_UP).longValue()); compAverageMemorySpent.put(entry.getKey(), new BigDecimal(totalMemorySpent).divide(new BigDecimal(entry.getValue().size()), 2, RoundingMode.HALF_UP).longValue()); } - System.out.println("======================================================================================"); - System.out.println("===================================SLOT INFO=========================================="); - System.out.println("SLOT TOTAL SIZE : "+DataBus.SLOT_SIZE); - System.out.println("SLOT OCCUPY COUNT : "+DataBus.OCCUPY_COUNT); - System.out.println("===============================TIME AVERAGE SPENT====================================="); - for(Entry entry : compAverageTimeSpent.entrySet()){ - System.out.println("COMPONENT["+entry.getKey()+"] AVERAGE TIME SPENT : " + entry.getValue()); + + List> compAverageTimeSpentEntryList = new ArrayList<>(compAverageTimeSpent.entrySet()); + List> compAverageMemorySpentEntryList = new ArrayList<>(compAverageMemorySpent.entrySet()); + + Collections.sort(compAverageTimeSpentEntryList,new Comparator>() { + @Override + public int compare(Entry o1, Entry o2) { + return o2.getValue().compareTo(o1.getValue()); + } + }); + + Collections.sort(compAverageMemorySpentEntryList,new Comparator>() { + @Override + public int compare(Entry o1, Entry o2) { + return o2.getValue().compareTo(o1.getValue()); + } + }); + + StringBuilder logStr = new StringBuilder(); + logStr.append("以下为LiteFlow中间件统计信息:\n"); + logStr.append("======================================================================================\n"); + logStr.append("===================================SLOT INFO==========================================\n"); + logStr.append(MessageFormat.format("SLOT TOTAL SIZE : {0}\n", DataBus.SLOT_SIZE)); + logStr.append(MessageFormat.format("SLOT OCCUPY COUNT : {0}\n", DataBus.OCCUPY_COUNT)); + logStr.append("===============================TIME AVERAGE SPENT=====================================\n"); + for(Entry entry : compAverageTimeSpentEntryList){ + logStr.append(MessageFormat.format("COMPONENT[{0}] AVERAGE TIME SPENT : {1}\n", entry.getKey(), entry.getValue())); } - System.out.println("==============================MEMORY AVERAGE SPENT===================================="); - for(Entry entry : compAverageMemorySpent.entrySet()){ - System.out.println("COMPONENT["+entry.getKey()+"] AVERAGE MEMORY SPENT : "+ new BigDecimal(entry.getValue()).divide(new BigDecimal(1024), 2, RoundingMode.HALF_UP) + "K"); + logStr.append("==============================MEMORY AVERAGE SPENT====================================\n"); + for(Entry entry : compAverageMemorySpentEntryList){ + logStr.append(MessageFormat.format("COMPONENT[{0}] AVERAGE MEMORY SPENT : {1}K\n", entry.getKey(), new BigDecimal(entry.getValue()).divide(new BigDecimal(1024), 2, RoundingMode.HALF_UP))); } - System.out.println("======================================================================================"); + logStr.append("======================================================================================\n"); + LOG.info(logStr.toString()); }catch(Exception e){ LOG.error("print statistics cause error",e); }