Skip to content

Commit

Permalink
增加JVM相关监控Metrics;
Browse files Browse the repository at this point in the history
  • Loading branch information
linshunkang committed Aug 22, 2018
1 parent 78d2293 commit f26f3c6
Show file tree
Hide file tree
Showing 67 changed files with 1,371 additions and 357 deletions.
2 changes: 1 addition & 1 deletion MyPerf4J-ASM/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>MyPerf4J</artifactId>
<groupId>MyPerf4J</groupId>
<version>1.7.0</version>
<version>2.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
4 changes: 2 additions & 2 deletions MyPerf4J-ASM/src/main/java/cn/myperf4j/asm/ASMBootstrap.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import cn.myperf4j.asm.aop.ProfilingAspect;
import cn.myperf4j.core.AbstractBootstrap;
import cn.myperf4j.core.AbstractRecorderMaintainer;
import cn.myperf4j.core.config.ProfilingConfig;
import cn.myperf4j.core.util.Logger;
import cn.myperf4j.base.config.ProfilingConfig;
import cn.myperf4j.base.util.Logger;


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import cn.myperf4j.core.AbstractRecorderMaintainer;
import cn.myperf4j.core.Recorders;
import cn.myperf4j.core.config.ProfilingParams;
import cn.myperf4j.base.config.ProfilingParams;

/**
* Created by LinShunkang on 2018/4/26
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import cn.myperf4j.asm.ASMRecorderMaintainer;
import cn.myperf4j.core.MethodTagMaintainer;
import cn.myperf4j.core.Recorder;
import cn.myperf4j.core.util.Logger;
import cn.myperf4j.base.util.Logger;

/**
* Created by LinShunkang on 2018/4/15
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package cn.myperf4j.asm.aop;

import cn.myperf4j.core.config.ProfilingConfig;
import cn.myperf4j.core.config.ProfilingFilter;
import cn.myperf4j.core.util.Logger;
import cn.myperf4j.base.config.ProfilingConfig;
import cn.myperf4j.base.config.ProfilingFilter;
import cn.myperf4j.base.util.Logger;
import org.objectweb.asm.*;

import java.util.ArrayList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import cn.myperf4j.base.MethodTag;
import cn.myperf4j.core.AbstractRecorderMaintainer;
import cn.myperf4j.core.MethodTagMaintainer;
import cn.myperf4j.core.config.ProfilingConfig;
import cn.myperf4j.base.config.ProfilingConfig;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Type;
import org.objectweb.asm.commons.AdviceAdapter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cn.myperf4j.asm.aop;

import cn.myperf4j.core.config.ProfilingFilter;
import cn.myperf4j.core.util.Logger;
import cn.myperf4j.base.config.ProfilingFilter;
import cn.myperf4j.base.util.Logger;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
Expand Down
2 changes: 1 addition & 1 deletion MyPerf4J-Base/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>MyPerf4J</artifactId>
<groupId>MyPerf4J</groupId>
<version>1.7.0</version>
<version>2.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MyPerf4J-Base</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package cn.myperf4j.base;

import cn.myperf4j.base.metric.MethodMetrics;

import java.util.List;

/**
Expand All @@ -10,14 +12,14 @@
* 该接口用于处理MyPerf4J收集到的性能统计信息,MyPerf4J默认提供了 DefaultPerfStatsProcessor
* 如果需要特殊处理,可以自行实现PerfStatsProcessor接口,并自定义对perfStatsList的处理
*/
public interface PerfStatsProcessor {
public interface MethodMetricsProcessor {

/**
* @param perfStatsList : 方法执行统计信息列表,只包含在startMillis和stopMillis时间内有统计数据的方法
* @param methodMetricsList : 方法执行统计信息列表,只包含在startMillis和stopMillis时间内有统计数据的方法
* @param injectMethodCount : 被注入的方法数量
* @param startMillis : 此次统计信息的起始时间,单位为ms
* @param stopMillis : 此次统计信息的终止时间,单位为ms
*/
void process(List<PerfStats> perfStatsList, int injectMethodCount, long startMillis, long stopMillis);
void process(List<MethodMetrics> methodMetricsList, int injectMethodCount, long startMillis, long stopMillis);

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package cn.myperf4j.core.config;
package cn.myperf4j.base.config;

import cn.myperf4j.core.util.Logger;
import cn.myperf4j.base.util.Logger;

import java.util.Properties;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cn.myperf4j.core.config;
package cn.myperf4j.base.config;

import cn.myperf4j.core.constant.PropertyValues;
import cn.myperf4j.core.util.MapUtils;
import cn.myperf4j.base.constant.PropertyValues;
import cn.myperf4j.base.util.MapUtils;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cn.myperf4j.core.config;
package cn.myperf4j.base.config;

import java.util.HashSet;
import java.util.Set;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cn.myperf4j.core.config;
package cn.myperf4j.base.config;

/**
* Created by LinShunkang on 2018/4/28
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cn.myperf4j.core.constant;
package cn.myperf4j.base.constant;

/**
* Created by LinShunkang on 2018/4/27
Expand All @@ -7,7 +7,7 @@ public interface PropertyKeys {

String PRO_FILE_NAME = "MyPerf4JPropFile";

String PERF_STATS_PROCESSOR = "PerfStatsProcessor";
String PERF_STATS_PROCESSOR = "MethodMetricsProcessor";

String RECORDER_MODE = "RecorderMode";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package cn.myperf4j.core.constant;
package cn.myperf4j.base.constant;

import cn.myperf4j.base.psp.DefaultStdoutProcessor;
import cn.myperf4j.base.metric.processor.impl.StdoutMethodMetricProcessor;

/**
* Created by LinShunkang on 2018/4/27
Expand All @@ -17,7 +17,7 @@ public interface PropertyValues {

int MAX_BACKUP_RECORDERS_COUNT = 8;

String DEFAULT_PERF_STATS_PROCESSOR = DefaultStdoutProcessor.class.getName();
String DEFAULT_PERF_STATS_PROCESSOR = StdoutMethodMetricProcessor.class.getName();

long DEFAULT_TIME_SLICE = 60 * 1000L;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package cn.myperf4j.base.metric;

import java.lang.management.ClassLoadingMXBean;
import java.lang.management.ManagementFactory;

/**
* Created by LinShunkang on 2018/8/19
*/
public class JVMClassMetrics extends Metrics {

private static final long serialVersionUID = 5189910445931453667L;

private long total;

private long loaded;

private long unloaded;


public long getTotal() {
return total;
}

public void setTotal(long total) {
this.total = total;
}

public long getLoaded() {
return loaded;
}

public void setLoaded(long loaded) {
this.loaded = loaded;
}

public long getUnloaded() {
return unloaded;
}

public void setUnloaded(long unloaded) {
this.unloaded = unloaded;
}

@Override
public String toString() {
return "JVMClassMetrics{" +
"total=" + total +
", loaded=" + loaded +
", unloaded=" + unloaded +
'}';
}

public static void main(String[] args) {
ClassLoadingMXBean bean = ManagementFactory.getClassLoadingMXBean();
System.out.println(bean.getLoadedClassCount());
System.out.println(bean.getTotalLoadedClassCount());
System.out.println(bean.getUnloadedClassCount());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package cn.myperf4j.base.metric;

import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.List;

/**
* Created by LinShunkang on 2018/8/19
*/
public class JVMGCMetrics extends Metrics {

private static final long serialVersionUID = -233095689152915892L;

private String gcName;

private int collectCount;

private int collectTime;

public String getGcName() {
return gcName;
}

public void setGcName(String gcName) {
this.gcName = gcName;
}

public int getCollectCount() {
return collectCount;
}

public void setCollectCount(int collectCount) {
this.collectCount = collectCount;
}

public int getCollectTime() {
return collectTime;
}

public void setCollectTime(int collectTime) {
this.collectTime = collectTime;
}

@Override
public String toString() {
return "JVMGCMetrics{" +
"gcName='" + gcName + '\'' +
", collectCount=" + collectCount +
", collectTime=" + collectTime +
"} " + super.toString();
}

public static void main(String[] args) {
List<GarbageCollectorMXBean> garbageCollectorMxBeans = ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean bean : garbageCollectorMxBeans) {
System.out.println(bean.getName() + ": " + bean.getCollectionCount() + ", " + bean.getCollectionTime());
}
}
}
Loading

0 comments on commit f26f3c6

Please sign in to comment.