Coder Social home page Coder Social logo

linshunkang / myperf4j Goto Github PK

View Code? Open in Web Editor NEW
3.2K 120.0 505.0 1.19 MB

High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.

License: BSD 3-Clause "New" or "Revised" License

Java 100.00%
performance-monitoring performance apm jvm-monitor bytecode performance-metrics performance-visualization performance-tuning metrics profiler

myperf4j's People

Contributors

dependabot[bot] avatar imsingee avatar jiarg avatar khaes-kth avatar linshunkang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

myperf4j's Issues

请问介绍中influxDb 的截图是如何集成的呢?

问题描述
请清晰和简洁的描述你遇见的 问题

运行环境
1、JDK 版本号,例如,JDK7、JDK8 等
2、运行容器和框架,例如,Tomcat、PlainJava、Spring、SpringBoot 等
3、操作系统,例如,Linux、MacOS、Windows 等

JVM启动参数
请把你的JVM启动参数完整的复制出来

配置文件
请把你的配置文件内容完整的复制出来

异常堆栈
请把程序的错误栈信息完整的复制出来

在windows下运行是否存在问题?

BAT中编写启动指令如下:
java -jar SEmodbus_Server.jar -javaagent:MyPerf4J-ASM.jar -DMyPerf4JPropFile=myPerf4J.properties
配置文件中监控package配置为
IncludePackages=com.seari.modbusServer.api
其余为默认配置
SEmodbus_Server项目log4j stdout配置如下
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d %p [%c] - %m%n

运行后在console窗口中未见MyPerf4J相关日志信息

请问:有调用链形式的数据记录吗?

比如:a方法,调用b,c,d方法,b调用e方法,展现的形式就是以缩进(或标号1.1;1.1.1,1,2,1.3)的形式展示

`MyPerf4J Performance Statistics [2018-07-01 23:40:23, 2018-07-01 23:40:24]

chain Api[2/3] RPS Avg(ms) Min(ms) Max(ms) StdDev Count TP50 TP90 TP95 TP99 TP999 TP9999 TP99999 TP100

1 DemoServiceImpl.getId1 7454181 0.00 0 0 0.00 7454181 0 0 0 0 0 0 0 0

1.1 DemoServiceImpl.getId2 7454180 0.00 0 0 0.00 7454180 0 0 0 0 0 0 0 0`

能否支持下mysql持久化?

毕竟现在用mysql也挺多的,持久化以后可以自己做数据图表,便于跟踪性能优化的情况。最好配套建表sql语句。感谢!

你好,请教个问题,如果监控的方法有异常抛出,怎么处理?

问题描述
请清晰和简洁的描述你遇见的 问题

运行环境
1、JDK 版本号,例如,JDK7、JDK8 等
2、运行容器和框架,例如,Tomcat、PlainJava、Spring、SpringBoot 等
3、操作系统,例如,Linux、MacOS、Windows 等

JVM启动参数
请把你的JVM启动参数完整的复制出来

配置文件
请把你的配置文件内容完整的复制出来

异常堆栈
请把程序的错误栈信息完整的复制出来

执行程序时,influxDB没有插入数据

###配置文件MyPerf4j.properties###
#应用名称
AppName=MyPerf4jTest

#InfluxDB
MetricsProcessorType=2
MethodMetricsFile=/data/logs/MyPerf4J/metrics.log
#ProfilingParamsFile=myPerf4J.profilingParams

#配置备份Recorders的数量,默认为1,最小为1,最大为8,当需要在较小MillTimeSlice内统计大量方法性能数据时可配置大一些
BackupRecordersCount=1

#配置Record模式,可配置为accurate/rough
RecorderMode=accurate

#配置时间片,单位为ms,最小1s,最大600s
MillTimeSlice=10000

#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=com.bamboo.demo;

#不需要监控的package,可配置多个,用英文';'分隔
ExcludePackages=org.spring;

#可配置多个方法名,用英文';'分隔
ExcludeMethods=equals;hash

#是否排除私有方法,true/false
ExcludePrivateMethod=true

#通用的方法执行时间阈值,单位为ms
ProfilingTimeThreshold=1000

#在一个时间片内,超过方法执行时间阈值的次数,仅在RecorderMode=accurate时有效
ProfilingOutThresholdCount=10

###配置文件telegraf.conf###

Global tags can be specified here in key="value" format.

[global_tags]
dc = ""

Configuration for telegraf agent

[agent]

Default data collection interval for all inputs

interval = "1s"

Rounds collection interval to 'interval'

ie, if interval="10s" then always collect on :00, :10, :20, etc.

round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"

Default flushing interval for all outputs. You shouldn't set this below

interval. Maximum flush_interval will be flush_interval + flush_jitter

flush_interval = "1s"
flush_jitter = "0s"
precision = "ms"
debug = false
quiet = false
logfile = "/tmp/telegraf.log"

Override default hostname, if empty use os.Hostname()

hostname = ""

If set to true, do no set the "host" tag in the telegraf agent.

omit_hostname = false

[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
database = "telegraf"
retention_policy = ""
write_consistency = "any"
timeout = "5s"
username = "admin"
password = "admin"

[[inputs.tail]]
files = ["/data/logs/MyPerf4J/metrics.log"]
from_beginning = false
pipe = false
watch_method = "inotify"
data_format = "influx"

告警中心

问题描述
你好,这个服务有集成告警组件么?当Java服务出现性能问题(崩溃边缘)时,需要发出告警消息。

运行环境

JVM启动参数

配置文件

异常堆栈

是不是我配置有问题,启动提示权限不够

这个是堆栈异常

java -javaagent:D:\MyPerf4J\MyPerf4J-ASM.jar -DMyPerf4JPropFile=D:\MyPerf4J\myPerf4J.properties -jar hk8700-1.3.0.jar
2018-11-08 10:01:32.504 [MyPerf4J] WARN profilingParamFile is empty!
2018-11-08 10:01:32.522 [MyPerf4J] INFO
__ ___ ____ ______ __ __
/ |/ /_ / __ _ __/ / // / / /
/ /|/ / / / / // / _ / / // // /
/ /
/ / / / // / / __/ / / / __/ // /
/
/ /
/_
, /
/ _
// // // _
/
/____/

2018-11-08 10:01:32.522 [MyPerf4J] INFO AbstractBootstrap doInitial() SUCCESS!!!
2018-11-08 10:01:32.561 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader@18b4aac2, com/elink/estos/api/bootstrap/Bootstrap8700, classBeingRedefined, protectionDomain, 1332)...
2018-11-08 10:01:32.586 [MyPerf4J] ERROR ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader@18b4aac2, com/elink/estos/api/bootstrap/Bootstrap8700, null, ProtectionDomain (file:/D:/Users/30451/Documents/estos-api4/hk8700/target/hk8700-1.3.0.jar )
sun.misc.Launcher$AppClassLoader@18b4aac2

java.security.Permissions@17a7cec2 (
("java.io.FilePermission" "\D:\Users\30451\Documents\estos-api4\hk8700\target\hk8700-1.3.0.jar" "read")
("java.lang.RuntimePermission" "exitVM")
)

, 1332)
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.(Unknown Source)
at org.objectweb.asm.ClassReader.(Unknown Source)
at cn.myperf4j.asm.aop.ProfilingTransformer.getBytes(ProfilingTransformer.java:54)
at cn.myperf4j.asm.aop.ProfilingTransformer.transform(ProfilingTransformer.java:37)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
2018-11-08 10:01:32.693 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader@18b4aac2, com/elink/common/utils/PropertiesLoader, classBeingRedefined, protectionDomain, 5941)...
2018-11-08 10:01:32.695 [MyPerf4J] ERROR ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader@18b4aac2, com/elink/common/utils/PropertiesLoader, null, ProtectionDomain (file:/D:/Users/30451/Documents/estos-api4/hk8700/target/hk8700-1.3.0.jar )
sun.misc.Launcher$AppClassLoader@18b4aac2

java.security.Permissions@17a7cec2 (
("java.io.FilePermission" "\D:\Users\30451\Documents\estos-api4\hk8700\target\hk8700-1.3.0.jar" "read")
("java.lang.RuntimePermission" "exitVM")
)

, 5941)
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.(Unknown Source)
at org.objectweb.asm.ClassReader.(Unknown Source)
at cn.myperf4j.asm.aop.ProfilingTransformer.getBytes(ProfilingTransformer.java:54)
at cn.myperf4j.asm.aop.ProfilingTransformer.transform(ProfilingTransformer.java:37)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.elink.estos.api.bootstrap.Bootstrap8700.(Bootstrap8700.java:22)
start hk8700 server
2018-11-08 10:01:32.736 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader@18b4aac2, com/elink/common/utils/FileUtils, classBeingRedefined, protectionDomain, 14416)...
2018-11-08 10:01:32.737 [MyPerf4J] ERROR ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader@18b4aac2, com/elink/common/utils/FileUtils, null, ProtectionDomain (file:/D:/Users/30451/Documents/estos-api4/hk8700/target/hk8700-1.3.0.jar )
sun.misc.Launcher$AppClassLoader@18b4aac2

java.security.Permissions@17a7cec2 (
("java.io.FilePermission" "\D:\Users\30451\Documents\estos-api4\hk8700\target\hk8700-1.3.0.jar" "read")
("java.lang.RuntimePermission" "exitVM")
)

, 14416)
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.(Unknown Source)
at org.objectweb.asm.ClassReader.(Unknown Source)
at cn.myperf4j.asm.aop.ProfilingTransformer.getBytes(ProfilingTransformer.java:54)
at cn.myperf4j.asm.aop.ProfilingTransformer.transform(ProfilingTransformer.java:37)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.elink.estos.api.bootstrap.Bootstrap8700.main(Bootstrap8700.java:28)

配置文件信息

#应用名称
AppName=MyPerf4JTest

#MetricsProcessor类型,0:以标准格式化结构输出到stdout.log 1:以标准格式化结构输出到磁盘 2:以InfluxDB LineProtocol格式输出到磁盘
MetricsProcessorType=1

#配置各个Metrics日志的文件路径,可不配置
MethodMetricsFile=D:\MyPerf4J\method_metrics.log
#ClassMetricsFile=/data/logs/MyPerf4J/class_metrics.log
#GCMetricsFile=/data/logs/MyPerf4J/gc_metrics.log
#MemMetricsFile=/data/logs/MyPerf4J/memory_metrics.log
ThreadMetricsFile=D:\MyPerf4J\thread_metrics.log

#配置日志文件滚动时间间隔,分别有MINUTELY、HOURLY和DAILY三个值
LogRollingTimeUnit=HOURLY

#配置备份Recorders的数量,默认为1,最小为1,最大为8,当需要在较小MillTimeSlice内统计大量方法性能数据时可配置大一些
BackupRecordersCount=1

#配置Record模式,可配置为accurate/rough
RecorderMode=accurate

#配置时间片,单位为ms,最小1s,最大600s
MilliTimeSlice=10000

#是否展示方法参数类型
ShowMethodParams=true

#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=com.elink

#不需要监控的package,可配置多个,用英文';'分隔
ExcludePackages=org.spring;

#可配置多个方法名,用英文';'分隔
ExcludeMethods=equals;hash

#是否排除私有方法,true/false
ExcludePrivateMethod=true

#通用的方法执行时间阈值,单位为ms
ProfilingTimeThreshold=1000

#在一个时间片内,超过方法执行时间阈值的次数,仅在RecorderMode=accurate时有效
ProfilingOutThresholdCount=10

多个应用可否公用相同的日志文件?是否会冲突?

Bug 描述
请清晰和简洁的描述你遇见的 bug

多个应用可否公用相同的日志文件?是否会冲突?

假设我有两个应用:AppName=tomcat00 AppName=tomcat01
两个应用的配置文件中:xxxxMetricsFile我都设置为一样,且只有一个配置文件中我设置日志的回滚,那么所有的“同一台主机”上的多个java应用公用一个日志文件,对于一台主机上有多个java app来说非常方便。
但是不知道这样会否导致冲突?

运行环境
1、JDK 版本号,例如,JDK7、JDK8 等
JDK8
2、运行容器和框架,例如,Tomcat、PlainJava、Spring、SpringBoot 等
Tomcat8 SpringBoot1、2
3、操作系统,例如,Linux、MacOS、Windows 等

配置文件
请把你的配置文件内容完整的复制出来

异常堆栈
请把程序的错误栈信息完整的复制出来

asm版本兼容

如何和项目中的asm版本兼容
我也在做一个基于java agent的项目,用于实现method aop,调用groovy脚本,然后使用groovy脚本对方法进行mock,可以对调用外部接口的方法,dubbo接口方法,加解密方法进行mock。我用的javassist,遇到过我依赖的javassist和项目中的javasssit版本不兼容的问题。请问你这个项目,如何处理asm的版本兼容问题?

提个bug, ExcludePackages的问题

ExcludePackages 非必填参数, 当我不设置的这个参数的时候, 或者等于空, 会发生排除掉所有的package的情况
原因是这种情况下拿到的ExcludePackages 是空字符串, 并放到了excludePackage set中,

ProfilingFilter.isNotNeedInject的判断innerClassName.startsWith(prefix); // prefix == "", 就会排除掉所有的class了
ProfilingFilter 中 add 到相应set的判断需要改下

一直读不到配置文件

profilingParamFile is empty!
我的启动命令是:
java -jar -javaagent:MyPerf4J-ASM.jar -DMyPerf4JPropFile=/home/test/myPerf4J.properties

telegraf如何跨服务器收集日志呢?我们使用的分布式,需要在每个服务器上都安装一个telegraf吗?有办法通过一个telegraf来统一收集日志吗?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

可否增加各种metrics日志的保留时间?

Bug 描述
请清晰和简洁的描述你遇见的 bug

可否增加各种metrics日志的保留时间?现在具备LogRollingTimeUnit回滚时间,但是无法设置回滚后的旧日志保留多久

运行环境
1、JDK 版本号,例如,JDK7、JDK8 等

JDK8

2、运行容器和框架,例如,Tomcat、PlainJava、Spring、SpringBoot 等

Tomcat、SpringBoot

3、操作系统,例如,Linux、MacOS、Windows 等

Centos6、7

配置文件
请把你的配置文件内容完整的复制出来

#应用名称
#AppName=MyPerf4JTest
AppName=tomcat00

#MetricsProcessor类型,0:以标准格式化结构输出到stdout.log 1:以标准格式化结构输出到磁盘 2:以InfluxDB LineProtocol格式输出到磁盘
MetricsProcessorType=2

#配置各个Metrics日志的文件路径,可不配置
MethodMetricsFile=/home/logs/method_metrics.log
ClassMetricsFile=/home/logs/class_metrics.log
GCMetricsFile=/home/logs/gc_metrics.log
MemMetricsFile=/home/logs/memory_metrics.log
BufPoolMetricsFile=/home/logs/buf_pool_metrics.log
ThreadMetricsFile=/home/logs/thread_metrics.log

#配置Record模式,可配置为accurate/rough
RecorderMode=accurate

#配置时间片,单位为ms,最小1s,最大600s
MilliTimeSlice=10000

#是否展示方法参数类型
ShowMethodParams=true

LogRollingTimeUnit=HOURLY
BackupRecordersCount=2
ExcludePrivateMethod=true
#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=com.demo.[p1,p2,p3]

异常堆栈
请把程序的错误栈信息完整的复制出来

没有异常

Telegraf运行出错

Telegraf运行时报错
2018-10-17T11:09:07Z E! Error in plugin [inputs.tail]: took longer to collect than collection interval (5s)
不知道什么问题

使用接口时,会报类重复加载

Error creating bean with name 'ioCMDataRestService': Invocation of init method failed; nested exception is java.lang.LinkageError: loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for name: "com/huawei/iom/component/httpclient/pool/IdleConnectionMonitorThread"
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1272) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1272) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]

telegraf配置文件和我从官网下载最新一致,导致无法读取metrics

问题描述
telegraf配置文件和我从官网下载最新一致,导致无法读取metrics

官网的配置文件没有这个
[[inputs.tail]]
files = ["/data/logs/MyPerf4J/metrics.log"]
from_beginning = false
pipe = false

Method used to watch for file updates. Can be either "inotify" or "poll".

watch_method = "inotify"
data_format = "influx"

我把这块加上,启动直接报错。

运行环境
1、JDK 版本号,例如,JDK7、JDK8 等
2、运行容器和框架,例如,Tomcat、PlainJava、Spring、SpringBoot 等
3、操作系统,例如,Linux、MacOS、Windows 等

JVM启动参数
请把你的JVM启动参数完整的复制出来

配置文件
请把你的配置文件内容完整的复制出来

异常堆栈
请把程序的错误栈信息完整的复制出来

mvn clean package 出错

Bug 描述
mvn clean package 出错

运行环境
1、JDK 版本

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

2、运行容器和框架

3、操作系统

MacOS

配置文件

异常堆栈

[INFO]
[INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ MyPerf4J-Base ---
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] MyPerf4J 2.3.0 ..................................... SUCCESS [ 0.140 s]
[INFO] MyPerf4J-Base ...................................... FAILURE [ 2.294 s]
[INFO] MyPerf4J-Core ...................................... SKIPPED
[INFO] MyPerf4J-ASM 2.3.0 ................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.561 s
[INFO] Finished at: 2019-01-27T21:53:05+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on project MyPerf4J-Base: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test failed.: NullPointerException -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :MyPerf4J-Base

启动失败: java.lang.LinkageError: loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for name: "org/apache/logging/log4j/core/pattern/AnsiEscape"

Bug 描述
添加attach后,启动程序时报linkedError
运行环境
1、JDK 版本号:jdk1.8.121
2、运行容器和框架:java main方法运行
3、操作系统:MacOS

配置文件
AppName=log4j2-test
MetricsProcessorType=1
MethodMetricsFile=/Users/lly/Desktop/log4j2-metric/method_metrics.log
ClassMetricsFile=/Users/lly/Desktop/log4j2-metric/class_metrics.log
GCMetricsFile=/Users/lly/Desktop/log4j2-metric/gc_metrics.log
MemMetricsFile=/Users/lly/Desktop/log4j2-metric/memory_metrics.log
BufPoolMetricsFile=/Users/lly/Desktop/log4j2-metric/buf_pool_metrics
ThreadMetricsFile=/Users/lly/Desktop/log4j2-metric/thread_metrics.log
FileDescMetricsFile=/Users/lly/Desktop/log4j2-metric/file_desc_metrics.log
CompilationMetricsFile=/Users/lly/Desktop/log4j2-metric/compilation_metrics.log
MethodMilliTimeSlice=1000
JvmMilliTimeSlice=1000
IncludePackages=org.apache.logging.log4j.core.;com.lmax.disruptor.;org.apache.logging.log4j.perf.single.*;cn.perf4j.demo1.[p1,p2,p3]

异常堆栈
2020-05-13 18:55:22.961 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader, org/apache/logging/log4j/core/util/datetime/DatePrinter, classBeingRedefined, protectionDomain, 921)...
2020-05-13 18:55:22.962 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader, org/apache/logging/log4j/core/util/datetime/Format, classBeingRedefined, protectionDomain, 1344)...
2020-05-13 18:55:22.963 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader, org/apache/logging/log4j/core/util/datetime/FormatCache, classBeingRedefined, protectionDomain, 5222)...
2020-05-13 18:55:22.964 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader, org/apache/logging/log4j/core/util/datetime/FastDatePrinter, classBeingRedefined, protectionDomain, 16230)...
2020-05-13 18:55:22.971 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader, org/apache/logging/log4j/core/util/datetime/FastDateParser, classBeingRedefined, protectionDomain, 14553)...
2020-05-13 18:55:22.980 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader, org/apache/logging/log4j/core/pattern/AnsiEscape, classBeingRedefined, protectionDomain, 6257)...
Exception in thread "main" java.lang.LinkageError: loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for name: "org/apache/logging/log4j/core/pattern/AnsiEscape"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.logging.log4j.core.pattern.HighlightConverter.(HighlightConverter.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.logging.log4j.core.pattern.PatternParser.createConverter(PatternParser.java:583)
at org.apache.logging.log4j.core.pattern.PatternParser.finalizeConverter(PatternParser.java:639)
at org.apache.logging.log4j.core.pattern.PatternParser.parse(PatternParser.java:415)
at org.apache.logging.log4j.core.pattern.PatternParser.parse(PatternParser.java:177)
at org.apache.logging.log4j.core.layout.PatternLayout$SerializerBuilder.build(PatternLayout.java:377)
at org.apache.logging.log4j.core.layout.PatternLayout.(PatternLayout.java:129)
at org.apache.logging.log4j.core.layout.PatternLayout.(PatternLayout.java:59)
at org.apache.logging.log4j.core.layout.PatternLayout$Builder.build(PatternLayout.java:660)
at org.apache.logging.log4j.core.layout.PatternLayout$Builder.build(PatternLayout.java:517)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:958)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:898)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:890)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:890)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:513)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:237)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:249)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:581)
at org.apache.logging.log4j.perf.Tester.main(Tester.java:39)

telegraf配置了inputs.tail但是没有数据上传到influxdb

问题描述
请清晰和简洁的描述你遇见的 问题
你好,我按照流程配置了所有东西 "_metris.log"等文件也看到有内容输出,但是配置了telegraf并没有向influxdb输送inputs.tail指定的内容,现在influxdb没有关于JVM的任何数据

运行环境
1、JDK8 等
2、SpringBoot 等
3、Centos 7
4. telegraf是1.13.0版本
5. influxdb是1.7.9版本

JVM启动参数
请把你的JVM启动参数完整的复制出来

配置文件
请把你的配置文件内容完整的复制出来

异常堆栈
请把程序的错误栈信息完整的复制出来

谁调用了这个方法long start = System.nanoTime() 和ProfilingAspect.profiling(start, methodId);

long start = System.nanoTime() 和ProfilingAspect.profiling(start, methodId);
System.nanoTime() 应该在onMethodEnter调用 和
ProfilingAspect.profiling 应该在onMehtodExit中调用 对吧, 但是为啥找不到 求教

@Override
protected void onMethodEnter() {
    if (profiling()) {
        maintainer.addRecorder(methodTagId, profilingConfig.getProfilingParam(innerClassName + "/" + methodName));

        mv.visitMethodInsn(INVOKESTATIC, "java/lang/System", "nanoTime", "()J", false);
        startTimeIdentifier = newLocal(Type.LONG_TYPE);
        mv.visitVarInsn(LSTORE, startTimeIdentifier);
    }
}

@Override
protected void onMethodExit(int opcode) {
    if (profiling() && ((IRETURN <= opcode && opcode <= RETURN) || opcode == ATHROW)) {
        mv.visitVarInsn(LLOAD, startTimeIdentifier);
        mv.visitLdcInsn(methodTagId);
        mv.visitMethodInsn(INVOKESTATIC, PROFILING_ASPECT_INNER_NAME, "profiling", "(JI)V", false);
    }

IncludePackages 配置的使用

com.test 里面有类 a1.java,b1.java ,c1.java
IncludePackages 怎么监控到具体的类
IncludePackages = com.test.[a1.java,b1.java] 这样貌似行不动

transform 后的代码不生效

我在统计 spring getbean 方法和 doGetBean 方法的执行时间, 测试了几次后发现 getBean 方法log 行数比实际的方法调用下少很多(实际 500+ bean, 但是只打印出 10+ 行log), doGetBean 方法就完全没有任何 log

log 详见下面的 methodEnter 方法. 我把这个项目的代码读了几遍, 没看出问题点, 麻烦帮忙看下~~

配置文件

#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=org.springframework.context.support;org.springframework.beans.factory.support.DefaultListableBeanFactory

#不需要监控的package,可配置多个,用英文';'分隔
ExcludePackages=cn.perf4j.demo.[p4,p5,p6]

#可配置多个方法名,用英文';'分隔
ExcludeMethods=equals;hash

#是否排除私有方法,true/false
ExcludePrivateMethod=true

#通用的方法执行时间阈值,单位为ms
ProfilingTimeThreshold=0

#在一个时间片内,超过方法执行时间阈值的次数,仅在RecorderMode=accurate时有效
ProfilingOutThresholdCount=1

相关代码

    protected void onMethodEnter() {
        if (profiling()) {
            maintainer.addRecorder(methodTagId, profilingConfig.getProfilingParam(innerClassName + "/" + methodName));

            mv.visitMethodInsn(INVOKESTATIC, "java/lang/System", "nanoTime", "()J", false);
            startTimeIdentifier = newLocal(Type.LONG_TYPE);
            mv.visitVarInsn(LSTORE, startTimeIdentifier);

            //Logger.info("before entering method: " + methodName);
            Logger.info(String.format("before entering method: %s.%s", innerClassName, methodName));
        }
    }

GC监控建议使用JDK7引入的GC notification的机制

你想要的功能和某一个问题相关?请详细描述它。

GC信息不够详细,GC前后各区内存的变化,轮询也不够准确高效

描述你想要的解决方式

采用Java 7新推出的JMX API的GC notification机制可以获取更详细的GC信息

描述你所构想的解决方式

JMX API的GC notification

其他相关内容

启动 报错

at cn.myperf4j.asm.aop.ProfilingTransformer.getBytes(ProfilingTransformer.java:56)
at cn.myperf4j.asm.aop.ProfilingTransformer.transform(ProfilingTransformer.java:37)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424)
2018-11-21 10:38:28.462 [MyPerf4J] INFO ProfilingTransformer.transform(sun.misc.Launcher$AppClassLoader@1c4a1bda, XXService, classBeingRedefined, protectionDomain, 3014)...
at java.lang.ClassLoader.defineClass1(Native Method)

请问可以部署在[window]环境[tomcat/lib]下吗?

这个真心挺牛逼的,但是要是将以前的项目加上MyPerf4J-ASM.jar,然后再写配置文件,略感工作量有点大。
于是,突发奇想,可以将MyPerf4J-ASM.jar放在tomcat下,全局生效。
我在tomcat/bin/catalina.sh文件中,配置如下
-javaagent:%cd%\..\lib\MyPerf4J-ASM.jar -DMyPerf4JPropFile=%cd%\..\conf\myPerf4J.properties

在tomcat/conf/myPerf4J.properties 写
`#配置PerfStatsProcessor,可不配置,用于自定义统计数据的处理
#PerfStatsProcessor=cn.perf4j.demo.MyPerfStatsProcessor

#配置备份Recorders的数量,默认为1,最小为1,最大为8,当需要在较小MillTimeSlice内统计大量方法性能数据时可配置大一些
BackupRecordersCount=1

#配置Record模式,可配置为accurate/rough
RecorderMode=accurate

#配置时间片,单位为ms,最小1s,最大600s
MillTimeSlice=10000

#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=com.chinalife.sz

#不需要监控的package,可配置多个,用英文';'分隔
ExcludePackages=org.spring;

#可配置多个方法名,用英文';'分隔
ExcludeMethods=equals;hash

#是否排除私有方法,true/false
ExcludePrivateMethod=true

#通用的方法执行时间阈值,单位为ms
ProfilingTimeThreshold=1000

#在一个时间片内,超过方法执行时间阈值的次数,仅在RecorderMode=accurate时有效
ProfilingOutThresholdCount=10`

然后在tomcat/logs日志里,没找到MyPerf4J相关的信息

关于jvmGcMetrics 问题

请问 为什么oldGCount - lastOldGcCount 被定义成 fullGcCount 而不是oldGcCount?

    JvmGcMetrics jvmGcMetrics = new JvmGcMetrics(
            youngGcCount - lastYoungGcCount,
            youngGcTime - lastYoungGcTime,
            oldGCount - lastOldGcCount,
            oldGcTime - lastOldGcTime);


public JvmGcMetrics(long youngGcCount, long youngGcTime, long fullGcCount, long fullGcTime) {
    this.youngGcCount = youngGcCount;
    this.youngGcTime = youngGcTime;
    this.avgYoungGcTime = youngGcCount > 0L ? ((double) youngGcTime) / youngGcCount : 0D;
    this.fullGcCount = fullGcCount;
    this.fullGcTime = fullGcTime;
}

请问有方法可以让myperf4j-asm.jar支持jdk6吗?

问题描述
项目的环境用的是jdk6运行的,用到了很多其他组件,暂时没法直接升到jdk7及以上,请问有没有办法在源码这一层编译出一个myperf4j-asm.jar可在jdk6下运行的版本?非常感谢

telegraf inputs.tail error

2018-08-01T06:14:00Z E! Error in plugin [inputs.tail]: E! Malformed log line in /******/mylogs.log: [01-08-2018 14:14:00 INFO MyPerfStatsProcessor:42 - RequestVars,Method=RequestVars.setRealPath RPS=0i,Avg=0.00,Min=0i,Max=0i,StdDev=0.00,Count=1i,TP50=0i,TP90=0i,TP95=0i,TP99=0i,TP999=0i,TP9999=0i,TP99999=0i,TP100=0i 1533104030000000000], Error: metric parse error: expected field at offset 19: "01-08-2018 14:14:00 INFO MyPerfStatsProcessor:42 - RequestVars,Method=RequestVars.setRealPath RPS=0i,Avg=0.00,Min=0i,Max=0i,StdDev=0.00,Count=1i,TP50=0i,TP90=0i,TP95=0i,TP99=0i,TP999=0i,TP9999=0i,TP99999=0i,TP100=0i 1533104030000000000\n"

telegraf 的influx格式log解析不成功

Wanted: 您在使用 MyPerf4J 吗?/ who's using MyPerf4J ?

谁在使用 MyPerf4J

首先诚挚地感谢每一位持续关注并使用 MyPerf4J 的朋友。我会持续投入,力图把 MyPerf4J 变得更好。

此 Issue 的目的

  • 聆听用户的声音,让 MyPerf4J 变得更好
  • 吸引更多的人参与贡献
  • 更多的了解 MyPerf4J 的实际使用场景,以方便下一步的规划

我期待您能提供

在此提交一条评论, 评论内容包括:

  • 您所在公司、学校或组织
  • 您所在公司的网址(用于获取 Logo)
  • 您所在的城市、国家
  • 您的联系方式: 微博、邮箱、微信 (至少一个)
  • 您将 MyPerf4J 用于哪些业务场景

您可以参考下面的样例来提供您的信息:

* 组织:Boss直聘
* 网址:https://www.zhipin.com
* 地点:**北京
* 联系方式:[email protected]
* 场景:在生产环境中长期监控 Java 应用程序的性能指标

再次感谢你的参与!!!
林顺康

First of all, thanks sincerely for constantly using and supporting MyPerf4J. I will try my best to keep MyPerf4J better.

The purpose of this issue

  • I’d like to listen to the community to make MyPerf4J better.
  • I want to attract more people to contribute to MyPerf4J.
  • I'm willing to learn more MyPerf4J use scenarios in the field for better planning.

What I expect from you

Please. submit a comment in this issue to include the following information:

  • your company, school or organization.
  • your city and country.
  • your contact info: blog, email (at least one).
  • for what business scenario do you use MyPerf4J.

You can refer to the following sample answer for the format:

* Orgnizatioin: Boss直聘
* Website: https://www.zhipin.com
* Location: Beijing, China
* Contact: [email protected]
* Purpose: Long-term monitoring of performance metrics for Java applications in a production environment

Thanks again for your participation!
LinShunKang

直接使用下载的MyPerf4J-ASM.jar,出现java.lang.TypeNotPresentException

环境
centos7.2
jdk1.8
tomcat8.5.39
异常
2019-03-29 17:47:21.689 [MyPerf4J] ERROR ProfilingTransformer.transform(ParallelWebappClassLoader^M
context: system^M
delegate: false^M
----------> Parent Classloader:^M
java.net.URLClassLoader@3581c5f3^M
, org/apache/xerces/impl/Constants, null, protectionDomain, 8957) Type org/apache/xerces/impl/Constants$ArrayEnumeration not present
java.lang.TypeNotPresentException: Type org/apache/xerces/impl/Constants$ArrayEnumeration not present
at org.shaded.objectweb.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:951)
at org.shaded.objectweb.asm.SymbolTable.addMergedType(SymbolTable.java:1209)
at org.shaded.objectweb.asm.Frame.merge(Frame.java:1293)
at org.shaded.objectweb.asm.Frame.merge(Frame.java:1238)
at org.shaded.objectweb.asm.MethodWriter.computeAllFrames(MethodWriter.java:1613)
at org.shaded.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1549)
at org.shaded.objectweb.asm.MethodVisitor.visitMaxs(MethodVisitor.java:773)
at org.shaded.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(LocalVariablesSorter.java:148)
at org.shaded.objectweb.asm.ClassReader.readCode(ClassReader.java:2429)
at org.shaded.objectweb.asm.ClassReader.readMethod(ClassReader.java:1275)
at org.shaded.objectweb.asm.ClassReader.accept(ClassReader.java:679)
at org.shaded.objectweb.asm.ClassReader.accept(ClassReader.java:391)
at cn.myperf4j.asm.aop.ProfilingTransformer.getBytes(ProfilingTransformer.java:57)
at cn.myperf4j.asm.aop.ProfilingTransformer.transform(ProfilingTransformer.java:37)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2401)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:859)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)
at org.apache.xerces.impl.dtd.XMLDTDValidator.validate(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)

请问为什么Method Metrics没有数据?

Bug 描述
请清晰和简洁的描述你遇见的 bug
安装后其他的指标都有数据,但是java日志里Method Metrics一直没有数据返回
运行环境
1、JDK 版本号,例如,JDK7、JDK8 等
2、运行容器和框架,例如,Tomcat、PlainJava、Spring、SpringBoot 等
SpringBoot,JDK8
配置文件
请把你的配置文件内容完整的复制出来
#应用名称
AppName=risk-1.0.0.jar

#配置MetricsProcessors,可不配置
#MethodMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBMethodMetricsProcessor
#ClassMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmClassMetricsProcessor
#GCMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmGCMetricsProcessor
#MemMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmMemoryMetricsProcessor
#ThreadMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmThreadMetricsProcessor

MetricsProcessorType=2

#配置各个Metrics日志的文件路径,可不配置
MethodMetricsFile=/tmp/MyPerf4J/method_metrics.log
ClassMetricsFile=/tmp/MyPerf4J/class_metrics.log
GCMetricsFile=/tmp/MyPerf4J/gc_metrics.log
MemMetricsFile=/tmp/MyPerf4J/memory_metrics.log
BufPoolMetricsFile=/tmp/MyPerf4J/buf_pool_metrics.log
ThreadMetricsFile=/tmp/MyPerf4J/thread_metrics.log

#配置备份Recorders的数量,默认为1,最小为1,最大为8,当需要在较小MillTimeSlice内统计大量方法性能数据时可配置大一些
BackupRecordersCount=1

#配置Record模式,可配置为accurate/rough
RecorderMode=rough

#配置时间片,单位为ms,最小1s,最大600s
MillTimeSlice=10000

#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=risk-1.0.0.jar

#不需要监控的package,可配置多个,用英文';'分隔
#ExcludePackages=org.spring;

#可配置多个方法名,用英文';'分隔
ExcludeMethods=equals;hash

#是否排除私有方法,true/false
ExcludePrivateMethod=true

#通用的方法执行时间阈值,单位为ms
ProfilingTimeThreshold=1000

#在一个时间片内,超过方法执行时间阈值的次数,仅在RecorderMode=accurate时有效
ProfilingOutThresholdCount=10
异常堆栈
请把程序的错误栈信息完整的复制出来
MyPerf4J JVM Class Metrics [2018-11-25 11:47:00, 2018-11-25 11:48:00]
Total Loaded Unloaded
7271 7271 0

MyPerf4J JVM GC Metrics [2018-11-25 11:47:00, 2018-11-25 11:48:00]
Name Count Time
PS Scavenge 6 134
PS MarkSweep 2 92

MyPerf4J JVM Memory Metrics [2018-11-25 11:47:00, 2018-11-25 11:48:00]
NonHeapInit NonHeapUsed NonHeapCommitted NonHeapMax HeapInit HeapUsed HeapCommitted HeapMax
2555904 66061400 68091904 -1 2147483648 569814776 2089811968 2089811968

MyPerf4J JVM BufferPool Metrics [2018-11-25 11:47:00, 2018-11-25 11:48:00]
Name Count MemoryUsed MemoryCapacity
direct 0 0 0
mapped 0 0 0

MyPerf4J Method Metrics [2018-11-25 11:47:00, 2018-11-25 11:48:00]
Method[0] RPS Avg(ms) Min(ms) Max(ms) StdDev Count TP50 TP90 TP95 TP99 TP999 TP9999 TP99999 TP100

MyPerf4J JVM Class Metrics [2018-11-25 11:48:00, 2018-11-25 11:49:00]
Total Loaded Unloaded
7282 7282 0

MyPerf4J JVM GC Metrics [2018-11-25 11:48:00, 2018-11-25 11:49:00]
Name Count Time
PS Scavenge 6 134
PS MarkSweep 2 92

MyPerf4J JVM Memory Metrics [2018-11-25 11:48:00, 2018-11-25 11:49:00]
NonHeapInit NonHeapUsed NonHeapCommitted NonHeapMax HeapInit HeapUsed HeapCommitted HeapMax
2555904 66187808 68091904 -1 2147483648 573002480 2089811968 2089811968

MyPerf4J JVM BufferPool Metrics [2018-11-25 11:48:00, 2018-11-25 11:49:00]
Name Count MemoryUsed MemoryCapacity
direct 0 0 0
mapped 0 0 0

Centos7下使用tomcat的shutdown.sh 启动关闭时报错,找不到类,启动参数是配置到setenv.sh中,作为java option 参数传递进去的

[root@test logs]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
2018-08-23 13:37:16.436 [MyPerf4J] ERROR AbstractBootstrap.initPerfStatsProcessor()
java.lang.ClassNotFoundException: cn.myperf4j.ext.psp.DefaultLoggerProcessor
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at cn.myperf4j.core.AbstractBootstrap.initPerfStatsProcessor(AbstractBootstrap.java:225)
at cn.myperf4j.core.AbstractBootstrap.doInitial(AbstractBootstrap.java:78)
at cn.myperf4j.core.AbstractBootstrap.initial(AbstractBootstrap.java:33)
at cn.myperf4j.asm.PreMain.premain(PreMain.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
2018-08-23 13:37:16.482 [MyPerf4J] ERROR AbstractBootstrap initPerfStatsProcessor() FAILURE!!!
2018-08-23 13:37:16.482 [MyPerf4J] ERROR AbstractBootstrap doInitial() FAILURE!!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.