性能监控

引言

性能监控模块用来监控IOTDB每一个操作的耗时,以便用户更好的了解数据库的整体性能。此模块会统计每一种操作的平均耗时,以及耗时在一定时间区间内(1ms,4ms,16ms,64ms,256ms,1024ms,以上)的操作的比例。输出文件在log_measure.log中。输出样例如下:

性能监控 - 图1

配置参数

配置文件位置:conf/iotdb-engine.properties

**表 -配置参数以及描述项**

参数默认值描述
enable_performance_statfalse是否开启性能监控模块
performance_stat_display_interval60000打印统计结果的时间延迟,以毫秒为单位
performance_stat_memory_in_kb20性能监控模块使用的内存阈值,单位为KB

利用JMX MBean动态调节参数

通过端口31999连接jconsole,并在上方菜单项中选择‘MBean’. 展开侧边框并选择 ‘org.apache.iotdb.db.cost.statistic’. 将会得到如下图所示结果:

性能监控 - 图2

属性

  1. EnableStat:是否开启性能监控模块,如果被设置为true,则性能监控模块会记录每个操作的耗时并打印结果。这个参数不能直接通过jconsole直接更改,但可通过下方的函数来进行动态设置。
  2. DisplayIntervalInMs:相邻两次打印结果的时间间隔。这个参数可以直接设置,但它要等性能监控模块重启才会生效。重启性能监控模块可以通过先调用 stopStatistic()然后调用startContinuousStatistics()或者直接调用 startOneTimeStatistics()实现。
  3. OperationSwitch:这个属性用来展示针对每一种操作是否开启了监控统计,map的键为操作的名字,值为是否针对这种操作开启性能监控。这个参数不能直接通过jconsole直接更改,但可通过下方的 ‘changeOperationSwitch()’函数来进行动态设置。

操作

  1. startContinuousStatistics:开启性能监控并以‘DisplayIntervalInMs’的时间间隔打印统计结果。
  2. startOneTimeStatistics:开启性能监控并以‘DisplayIntervalInMs’的时间延迟打印一次统计结果。
  3. stopStatistic:关闭性能监控。
  4. clearStatisticalState(): 清除以统计的结果,从新开始统计。
  5. changeOperationSwitch(String operationName, Boolean operationState):设置是否针对每一种不同的操作开启监控。参数‘operationName是操作的名称,在OperationSwitch属性中展示了所有操作的名称。参数 ‘operationState’是操作的状态,打开或者关闭。如果状态设置成功则此函数会返回true,否则返回false。

自定义操作类型监控其他区域

增加操作项

在org.apache.iotdb.db.cost.statistic.Operation类中增加一个枚举项来表示新增的操作.

在监控区域增加监控代码

在监控开始区域增加计时代码:

  1. long t0 = System. currentTimeMillis();

在监控结束区域增加记录代码:

  1. Measurement.INSTANCE.addOperationLatency(Operation, t0);