Java连接dm7,【干货分享】DM7 JDBC性能监控使用

原标题:【干货分享】DM7 JDBC性能监控使用

1、配置参数

statDir=/mppdata/test //日志输出目录,windows为:d:/test

statEnable=true //是否启用监控true/false,默认false;

statFlushFreq=10 //状态统计信息刷盘时间,单位s;默认10s,有效范围(>0)

statSlowSqlCount=100 //打印慢sql top行数,默认100,有效范围(0-1000)

statHighFreqSqlCount=100 //打印高频sql top行数,默认100,有效范围(0-1000)

statMaxSqlCount=100000 //最多能统计的不同sql的个数,默认10万,有效范围(0-10万)

statSqlRemoveMode=latest //执行的sql数超过statMaxSqlCount值时,sql的淘汰算法;latest:淘汰最近执行的sql;eldest淘汰最老的sql;

注:以上配置参数是在JDBC的URL连接串中配置,也可以在dm_svc.conf文件中配置,格式如下:

STAT_ENABLE=(1)

STAT_DIR=(/mppdata/ybl/jdbclog) ##windows格式d:jdbclog

STAT_FLUSH_FREQ=(120)

STAT_SLOW_SQL_COUNT=(10)

STAT_HIGH_FREQ_SQL_COUNT=(10)

STAT_MAX_SQL_COUNT=(10000)

STAT_SQL_REMOVE_MODE=(ELDEST)

2、输出到监控文件使用测试

以100库的benchmarksql tpcc测试为例,配置props.dm:

driver=dm.jdbc.driver.DmDriver

conn=jdbc:dm://223.254.17.235:5239?statEnable=true&statDir=/mppdata/ybl/jdbclog&statFlushFreq=120&statSlowSqlCount=10&statHighFreqSqlCount=10&statMaxSqlCount=10000&statSqlRemoveMode=eldest

user=BENCHMARKSQL

password=123456789

warehouses=100

terminals=10

//To run specified transactions per terminal- runMins mustequal zero

runTxnsPerTerminal=0

//To run for specified minutes- runTxnsPerTerminal mustequal zero

runMins=5

//Number of total transactions per minute

limitTxnsPerMin=0

//The following five values must add up to 100

newOrderWeight=45

paymentWeight=43

orderStatusWeight=4

deliveryWeight=4

stockLevelWeight=4

benchmarksql测试执行完成后,在/mppdata/ybl/jdbclog目录下生成dm_jdbc_stat_.log的监控日志文件,文件内容为每隔2分钟刷盘一次,记录包含三部分内容:连接信息、top指定行数的高频sql信息、top指定行数的慢sql信息。生成的日志文件片段如下所示:

a6732471ad272e24c41f67d05bfde8f4.png

ff3038c1fe5e7b11ae1bc036edca4925.png

注:对比同等配置情况下,获取到的logcommit日志,并进行日志分析,得出的高频SQL和慢SQL语句与JDBC监控日志获取信息一致。

连接信息:

{

ID 连接的url

ActiveConnCount 活动连接数

MaxActiveConnCount达到过的最大活动连接数

ActiveStmtCount 活动句柄数

MaxActiveStmtCount 达到过的最大活动句柄数

ExecuteCount 执行次量

ErrorCount 执行出错次数

CommitCount 提交次数

RollbackCount 回滚次数

}

sql语句信息:

{

ID sql编号

SQL sql语句

ExecCount 执行次数

ExecTime 执行时间总和

ExecMax 最长执行时间

Txn 在事务中执行的次数(非自动提交)

Error 出错次数

Update 更新行数总和

FetchRow 获取行数总和

Running 正在执行数

Concurrent 最大并发数

ExecHisto 执行时间分布

ExecRsHisto 执行+结果集获取时间和的分布

FetchRowHisto 结果集获取行数分布

UpdateHisto 更新行数分布

}

ExecHisto是一个长度为8的数组,每个元素表示执行时间在相应区间内的次数,区间如下,单位ms:

0-1;

1-10;

10-100;

100-1000;

1000-10000;

10000-100000;

100000-1000000;

1000000以上;

ExecRsHisto区间与ExecHisto相同;

FetchRowHisto是一个长度为6的数组,每个元素表示结果集获取行数在相应区间内的次数,区间如下:

0-1;

1-10;

10-100;

100-1000;

1000-10000;

10000以上;

UpdateHisto区间与FetchRowHisto相同;

3. WEB应用集成监控测试

图形化界面查看监控结果需要在已有的Web应用中配置:

1.连接串配置属性:

statEnable=true //是否启用监控true/false,默认false;

statFlushFreq=10 //状态统计信息页面刷新频率,单位s;默认10s,有效范围(>0)

statMaxSqlCount=100000 //最多能统计的不同sql的个数,默认10万,有效范围(0-10万)

statSqlRemoveMode=latest //执行的sql数超过statMaxSqlCount值时,sql的淘汰算法;latest:淘汰最近执行的sql;eldest淘汰最老的sql;

以上连接串配置属性也可以在dm_svc.conf中配置:

STAT_ENABLE=(1)

STAT_DIR=(d:jdbclog) #若不配置此项就不会输出日志文件,只在web页面显示监控结果

STAT_FLUSH_FREQ=(10)

STAT_SLOW_SQL_COUNT=(10)

STAT_HIGH_FREQ_SQL_COUNT=(10)

STAT_MAX_SQL_COUNT=(10000)

STAT_SQL_REMOVE_MODE=(ELDEST)

2.在web应用中配置servlet,如下:

DmJdbcStatServlet

dm.jdbc.stat.support.StatViewServlet

DmJdbcStatServlet

/dmjdbc/*

3.启动web应用

4.用浏览器访问页面“/dmjdbc/”即可进入监控页面。

注:这里使用2016年DM7自带的web示例项目进行配置,查看web页面监控结果如下:

首页----显示JDBC驱动基本信息:

585bd48712f48b03797cb3001c22e918.png

数据源----显示JDBC连接数据的信息

3df36b9e0562cb4f2226bfdf2da9f64b.png

SQL监控-------显示具体监控信息

327cf8db348eb3455ef435172aec1069.png

点击具体的SQL语句,会显示该SQL的详细监控信息:

f2775400390569c2fad2a55b0de7bc52.png

5d560c020c0fb3895e3dffcf702da0f8.png

4、性能影响测试对比

在100库benchmarksql tpcc环境下,配置100并发,执行五分钟的测试,分别在无任何日志监控、仅有JDBC监控、同步SQL日志监控、异步SQL日志监控情况下,测试结果:

分类

无日志监控

JDBC监控

同步SQL日志

异步SQL日志

tpmC (NewOrders)

20016.04

19105.81

3602.17

19591.1

tpmTOTAL

44471.57

42471.43

7999.54

43433.74

Active-Warehouse

100

100

100

100

Terminals-Per-Warehouse

100

100

100

100

测试总运行时间

5分钟

5分钟

5分钟

5分钟

性能下降比率

下降5%

下降80%

下降3%

从以上结果得出,使用JDBC监控日志对性能无影响,但是在开启同步SQL日志情况比不开启日志性能下降很明显。其他几种日志监控情况相差不大。

注:

1、同步SQL日志监控,即在dm.ini中开启

SVR_LOG = 1

2、异步SQL日志监控,即在dm.ini中开启

SVR_LOG = 1

SVR_LOG_ASYNC_FLUSH=1

在sqllog.ini中开启:

ASYNC_FLUSH = 1返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值