性能监控
引言
性能监控模块用来监控IOTDB每一个操作的耗时,以便用户更好的了解数据库的整体性能。此模块会统计每一种操作的平均耗时,以及耗时在一定时间区间内(1ms,4ms,16ms,64ms,256ms,1024ms,以上)的操作的比例。输出文件在log_measure.log中。输出样例如下:
配置参数
配置文件位置:conf/iotdb-engine.properties
**表 -配置参数以及描述项**
参数 | 默认值 | 描述 |
---|---|---|
enable_performance_stat | false | 是否开启性能监控模块 |
performance_stat_display_interval | 60000 | 打印统计结果的时间延迟,以毫秒为单位 |
performance_stat_memory_in_kb | 20 | 性能监控模块使用的内存阈值,单位为KB |
利用JMX MBean动态调节参数
通过端口31999连接jconsole,并在上方菜单项中选择‘MBean’. 展开侧边框并选择 ‘org.apache.iotdb.db.cost.statistic’. 将会得到如下图所示结果:
属性
- EnableStat:是否开启性能监控模块,如果被设置为true,则性能监控模块会记录每个操作的耗时并打印结果。这个参数不能直接通过jconsole直接更改,但可通过下方的函数来进行动态设置。
- DisplayIntervalInMs:相邻两次打印结果的时间间隔。这个参数可以直接设置,但它要等性能监控模块重启才会生效。重启性能监控模块可以通过先调用 stopStatistic()然后调用startContinuousStatistics()或者直接调用 startOneTimeStatistics()实现。
- OperationSwitch:这个属性用来展示针对每一种操作是否开启了监控统计,map的键为操作的名字,值为是否针对这种操作开启性能监控。这个参数不能直接通过jconsole直接更改,但可通过下方的 ‘changeOperationSwitch()’函数来进行动态设置。
操作
- startContinuousStatistics:开启性能监控并以‘DisplayIntervalInMs’的时间间隔打印统计结果。
- startOneTimeStatistics:开启性能监控并以‘DisplayIntervalInMs’的时间延迟打印一次统计结果。
- stopStatistic:关闭性能监控。
- clearStatisticalState(): 清除以统计的结果,从新开始统计。
- changeOperationSwitch(String operationName, Boolean operationState):设置是否针对每一种不同的操作开启监控。参数‘operationName是操作的名称,在OperationSwitch属性中展示了所有操作的名称。参数 ‘operationState’是操作的状态,打开或者关闭。如果状态设置成功则此函数会返回true,否则返回false。
自定义操作类型监控其他区域
增加操作项
在org.apache.iotdb.db.cost.statistic.Operation类中增加一个枚举项来表示新增的操作.
在监控区域增加监控代码
在监控开始区域增加计时代码:
long t0 = System. currentTimeMillis();
在监控结束区域增加记录代码:
Measurement.INSTANCE.addOperationLatency(Operation, t0);