Skip to content

2.x 配置

LinShunKang edited this page Jun 26, 2020 · 1 revision

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模式 与 Accurate模式

  • Rough 模式

    • 精度略差,会把响应时间超过指定阈值的记录为'阈值+1'
    • 更加节省内存,只使用数组来记录响应时间
    • 速度略快一些,但计算 Metrics 的速度略慢一些
    • MyPerf4JPropFile 配置文件中指定 RecorderMode=rough
  • Accurate 模式

    • 精度高,会记录所有的响应时间
    • 相对耗费内存,使用数组 + Map 来记录响应时间
    • 速度略慢一些,但计算 Metrics 的速度略快一些
    • 默认
  • 建议

    • 对于有以下特征的应用,推荐使用 Rough 模式
      • 内存敏感
      • 精度要求不是特别高
    • 对于有以下特征的应用,推荐使用 Accurate 模式
      • 内存不敏感
      • 精度要求特别高
      • 方法响应时间范围比较广
      • MyPerf4J 的版本号大于等于 2.8.0

关于 ProfilingParamsFile

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 
    

关于包路径规则

IncludePackagesExcludePackages 目前支持以下三种规则:

  • com.demo.p1 代表包含以 com.demo.p1 为前缀的所有包和类
  • [] 表示集合的概念:例如,com.demo.[p1,p2,p3] 代表包含以 com.demo.p1com.demo.p2com.demo.p3 为前缀的所有包和类,等价于 com.demo.p1;com.demo.p2;com.demo.p3
  • * 表示通配符:可以指代零个或多个字符,例如,com.*.demo.*

关于 ExcludeMethods 的使用规则

ExcludeMethods 目前支持以下三种规则:

  • ExcludeMethods=getId1 代表排除所有方法名为 getId1 的方法
  • ExcludeMethods=DemoServiceImpl.getId1 代表排除类 DemoServiceImpl 中所有方法名为 getId1 的方法
  • ExcludeMethods=DemoServiceImpl.getId1(long) 代表排除类 DemoServiceImpl 中方法签名为 getId1(long) 的方法

关于 ClassLevelMapping 的使用规则

ClassLevelMapping 用于配置 Class 层级映射关系,格式为:LevelA:[classNameExpA1,classNameExpA2];LevelB:[classNameExpB1,classNameExpB2],以 ClassLevelMapping=Api:[*Api,*ApiImpl];Controller:[*Controller];为例:

  • Api:[*Api,*ApiImpl] 代表所有以 Api 和 ApiImpl 结尾的类的层级为 Api
  • Controller:[*Controller] 代表所有以 Controller 结尾的类的层级为 Controller