-
Notifications
You must be signed in to change notification settings - Fork 543
LinShunKang edited this page Dec 22, 2019
·
47 revisions
MyPerf4J 默认提供了以下几个参数,用于控制 MyPerf4J 的行为:
属性 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
AppName | String | Yes | 配置应用名称 | |
MetricsProcessorType | int | No | 0 | 配置用于处理监控指标的 Processor 的类型 0:以标准格式化结构输出到 stdout.log 1:以标准格式化结构输出到磁盘 2:以 InfluxDB 格式输出到磁盘 |
MethodMetricsFile | String | No | /data/logs/MyPerf4J/metrics.log | 配置方法性能监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
ClassMetricsFile | String | No | NULL | 配置类加载监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
GCMetricsFile | String | No | NULL | 配置GC监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
MemMetricsFile | String | No | NULL | 配置内存监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
BufPoolMetricsFile | String | No | NULL | 配置 BufferPool 监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
ThreadMetricsFile | String | No | NULL | 配置线程监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
FileDescMetricsFile | String | No | NULL | 配置文件描述符监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
CompilationMetricsFile | String | No | NULL | 配置编译时间监控指标的日志路径,NULL 表示丢弃收集到的监控指标 |
LogRollingTimeUnit | String | No | DAILY | 配置日志文件滚动时间间隔,分别有 MINUTELY、HOURLY 和 DAILY 三个值 |
LogReserveCount | int | No | 7 | 配置历史日志文件保留个数 |
RecorderMode | String | No | rough | 配置 RecordMode,包含 accurate 和 rough 两个模式 |
MilliTimeSlice | int | No | 30000 | 配置统计时间片,单位为 ms,最小 1s,最大 600s |
ShowMethodParams | boolean | No | false | 是否展示方法参数类型 |
ClassLevelMapping | String | No | 配置 Java类的层级映射关系 | |
BackupRecordersCount | Int | No | 1 | 配置备用 Recorders 的数量,最小 1,最大 8;当你的应用程序拥有非常多的方法需要监控并且你配置的MilliTimeSlice 比较小时,可以适当的提高 BackupRecordersCount 的数值。 |
IncludePackages | String | Yes | 配置需要进行监控的包的前缀,支持多个包路径,每个包路径用英文 ';' 分隔;可以使用 [] 表示包/类的集合,形如:com.demo.[p1,p2,p3] ;可以使用 * 表示通配符,形如:com.*.demo.*
|
|
ExcludePackages | String | No | 配置不需要进行监控的包的前缀,支持多个包路径,每个包路径用英文 ';' 分隔;可以使用 [] 表示包/类的集合,形如:com.demo.[p1,p2,p3] ;可以使用 * 表示通配符,形如:com.*.demo.*
|
|
Debug.PrintDebugLog | boolean | No | false | 配置是否打印 debug 日志,可配置为 true/false |
ExcludeMethods | String | No | 配置不需要进行监控的方法名,每个方法名用英文 ';' 分隔 | |
ExcludePrivateMethod | boolean | No | true | 配置是否要排除私有方法,可配置为true/false |
ExcludeClassLoaders | String | No | 配置不需要进行监控的 ClassLoader,支持多个 ClassLoader,每个 ClassLoader 路径用英文';'分隔 | |
ProfilingParamsFile | String | No | 配置 ProfilingParamsFile 文件的路径;用于对 MyPerf4J 进行内存占用调优;形如: /your/path/to/myPerf4J.profilingParams | |
ProfilingTimeThreshold | int | No | 1000 | 配置通用的方法响应时间阈值,单位为 ms |
ProfilingOutThresholdCount | int | No | 16 | 配置通用的方法响应时间超出指定阈值的次数,仅在 RecorderMode=accurate 时有效 |
-
Rough 模式
- 精度略差,会把响应时间超过指定阈值的记录为'阈值+1'
- 更加节省内存,只使用数组来记录响应时间
- 速度略快一些,但计算 Metrics 的速度略慢一些
- 在
MyPerf4JPropFile
配置文件中指定RecorderMode=rough
-
Accurate 模式
- 精度高,会记录所有的响应时间
- 相对耗费内存,使用数组 + Map 来记录响应时间
- 速度略慢一些,但计算 Metrics 的速度略快一些
- 默认
-
建议
- 对于有以下特征的应用,推荐使用 Rough 模式
- 内存敏感
- 精度要求不是特别高
- 对于有以下特征的应用,推荐使用 Accurate 模式
- 内存不敏感
- 精度要求特别高
- 方法响应时间范围比较广
- MyPerf4J 的版本号大于等于 2.8.0
- 对于有以下特征的应用,推荐使用 Rough 模式
ProfilingParamsFile 用于指定每个具体方法的响应时间阈值以及超出阈值次数,让 MyPerf4J 以更少的内存统计更多的方法。
-
在
/your/path/to/MyPerf4J.properties
中指定ProfilingParamsFile=/your/path/to/MyPerf4J.profilingParams
-
在
/your/path/to/MyPerf4J.profilingParams
配置如下:#配置的格式为: #fullClassName.methodName=方法响应时间阈值(ms):超出阈值的次数 cn.perf4j.demo.DemoServiceImpl.getId1=1000:10 cn.perf4j.demo.DemoServiceImpl.getId2=2000:20
IncludePackages
和 ExcludePackages
目前支持以下三种规则:
- 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.*
ExcludeMethods
目前支持以下三种规则:
-
ExcludeMethods=getId1
代表排除所有方法名为getId1
的方法 -
ExcludeMethods=DemoServiceImpl.getId1
代表排除类DemoServiceImpl
中所有方法名为getId1
的方法 -
ExcludeMethods=DemoServiceImpl.getId1(long)
代表排除类DemoServiceImpl
中方法签名为getId1(long)
的方法
ClassLevelMapping
用于配置 Class 层级映射关系,格式为:LevelA:[classNameExpA1,classNameExpA2];LevelB:[classNameExpB1,classNameExpB2]
,以 ClassLevelMapping=Api:[*Api,*ApiImpl];Controller:[*Controller];
为例:
-
Api:[*Api,*ApiImpl]
代表所有以 Api 和 ApiImpl 结尾的类的层级为 Api -
Controller:[*Controller]
代表所有以 Controller 结尾的类的层级为 Controller
* Home
- Chinese-Doc
-
English Doc
- MyPerf4J
- Time Series Database
- Log Collector
- Visualization Platform