一、下载源码
地址:https://github.com/LinShunKang/MyPerf4J.git
分支:master
二、打包项目
- 跳过测试
- 打包
- 修改包名:MyPerf4J-ASM.jar
-
修改配置文件myPerf4J.properties(自己新建)
# MyPerf4J 所有配置请参考:https://github.com/LinShunKang/MyPerf4J/wiki/%E9%85%8D%E7%BD%AE # 配置监控应用的名称 app_name = FlowProcessAgent # 是否开启 debug 模式,可配置为 true/false debug = true ############################################################################### # HTTP Server Configuration # ############################################################################### # 配置 HTTP Server 端口号 http.server.port = 2048 # 配置 HTTP Server 最小工作线程数 http.server.min_workers = 1 # 配置 HTTP Server 最大工作线程数 http.server.max_workers = 2 # 配置 HTTP Server 排队数, worker 线程数达到最大时,接受排队的请求个数 http.server.accept_count = 1024 ############################################################################### # Metrics Configuration # ############################################################################### # 配置 MetricsExporter 类型 # log.stdout: 以标准格式化结构输出到 stdout.log # log.standard: 以标准格式化结构输出到磁盘 # log.influxdb: 以 InfluxDB LineProtocol 格式输出到磁盘 # http.influxdb: 以 InfluxDB LineProtocol 格式发送至 InfluxDB server metrics.exporter = log.stdout # 配置各项监控指标日志的文件路径 # 如果 metrics.exporter 配置为 log.influxdb,建议把所有的 metrics.log.* 路径配置成一样以方便 Telegraf 收集 metrics.log.method = /home/hd/myPerf4J/logs/metrics.log metrics.log.class_loading = /home/hd/myPerf4J/logs/metrics.log metrics.log.gc = /home/hd/myPerf4J/logs/metrics.log metrics.log.memory = /home/hd/myPerf4J/logs/metrics.log metrics.log.buff_pool = /home/hd/myPerf4J/logs/metrics.log metrics.log.thread = /home/hd/myPerf4J/logs/metrics.log metrics.log.file_desc = /home/hd/myPerf4J/logs/metrics.log metrics.log.compilation = /home/hd/myPerf4J/logs/metrics.log # 配置日志文件滚动时间间隔,分别有 MINUTELY、HOURLY 和 DAILY 三个值 metrics.log.rolling.time_unit = DAILY # 配置历史日志文件保留个数 metrics.log.reserve.count = 7 # 配置方法指标采集的时间片,单位为 ms,最小 1s,最大 600s metrics.time_slice.method = 10000 # 配置 JVM 指标采集的时间片,单位为ms,最小1s,最大600s metrics.time_slice.jvm = 10000 # 是否展示方法参数类型 metrics.method.show_params = true # 配置 Java 类的层级映射关系 # 规则为:LevelA:[classNameExpA1,classNameExpA2];LevelB:[classNameExpB1,classNameExpB2]; metrics.method.class_level_mapping = Filter:[*Filter];Handler:[*Handler]; ############################################################################### # InfluxDB Configuration # ############################################################################### #influxdb.host = 60.205.188.229 #influxdb.port = 3306 #influxdb.database = MyPerf4J_Test #influxdb.username = root #influxdb.password = root # 配置超时时间,单位:ms #influxdb.conn_timeout = 3000 #influxdb.read_timeout = 5000 ############################################################################### # Filter Configuration # ############################################################################### # 配置需要监控的package,可配置多个,用英文';'分隔 # com.demo.p1 代表包含以 com.demo.p1 为前缀的所有包和类 # [] 表示集合的概念:例如,com.demo.[p1,p2,p3] 代表包含以 com.demo.p1、com.demo.p2 和 com.demo.p3 为前缀的所有包和类,等价于 com.demo.p1;com.demo.p2;com.demo.p3 # * 表示通配符:可以指代零个或多个字符,例如,com.*.demo.* filter.packages.include = cn.perf4j.demo; # 配置不需要监控的package,可配置多个,用英文';'分隔 filter.packages.exclude = cn.perf4j.demo.dao.DemoDAOImpl # 配置不需要进行监控的方法名,每个方法名用英文 ';' 分隔 #filter.methods.exclude = getId1 代表排除所有方法名为 getId1 的方法 #filter.methods.exclude = DemoServiceImpl.getId1 代表排除类 DemoServiceImpl 中所有方法名为 getId1 的方法 #filter.methods.exclude = DemoServiceImpl.getId1(long) 代表排除类 DemoServiceImpl 中方法签名为 getId1(long) 的方法 filter.methods.exclude = equals;toString;hashCode;wait # 配置是否排除私有方法,true/false filter.methods.exclude_private = true # 配置需要排除的 ClassLoader,可配置多个ClassLoader,用英文';'分隔 filter.class_loaders.exclude = ############################################################################### # Recorder Configuration # ############################################################################### # 配置 Recorder 模式,可配置为 accurate/rough recorder.mode = ACCURATE # 配置 Recorders 转盘的数量 recorders.backup_count = 3 # 指定通用的方法执行时间阈值,单位为 ms recorder.size.timing_arr = 1500 # 指定一个时间片内,超过方法执行时间阈值的次数,仅在 recorder.mode = accurate 时有效 recorder.size.timing_map = 128
-
MyPerf4J-ASM.jar和myPerf4J.properties上传到linux中
mkdir /home/hd/myPerf4J
mkdir /home/hd/myPerf4J/logs
-
在 JVM 启动参数里加上以下两个参数
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS" JVM_OPTS=" -Xmx2g -Xms2g -Xmn700m -XX:+UseG1GC -Xloggc:/home/hd/tomcat-app-node01/logs/gc.log -XX:+PrintGCDetails " MYPERF4J_OPTS=" -javaagent:/home/hd/myPerf4J/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/home/hd/myPerf4J/myPerf4J.properties" JAVA_OPTS="$JAVA_OPTS $JVM_OPTS $MYPERF4J_OPTS" # Register custom URL handlers # Do this here so custom URL handles (specifically 'war:...') can be used in the security policy JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
-
启动项目
[hd@ds1 bin]$ ./catalina.sh start
-
查看日志
[hd@ds1 logs]$ tail -n 200 catalina.out