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信息。生成的日志文件片段如下所示:
注:对比同等配置情况下,获取到的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,如下:
<servlet>
<servlet-name>DmJdbcStatServlet</servlet-name>
<servlet-class>dm.jdbc.stat.support.StatViewServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DmJdbcStatServlet</servlet-name>
<url-pattern>/dmjdbc/*</url-pattern>
</servlet-mapping>
3.启动web应用
4.用浏览器访问页面“<应用服务器地址>/dmjdbc/”即可进入监控页面。
注:这里使用2016年DM7自带的web示例项目进行配置,查看web页面监控结果如下:
首页----显示JDBC驱动基本信息:
数据源----显示JDBC连接数据的信息
SQL监控-------显示具体监控信息
点击具体的SQL语句,会显示该SQL的详细监控信息:
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
上海腾科教育科技有限公司聚焦ICT人才培养和教育服务、培养数字化时代的新型ICT人才、促进良性的ICT人才生态发展,提供面授教育、在线教育、IT人才培养与就业、高校专业共建与实验室建设、企业人才定制培养,以及教育科技领域内的技术开发、咨询、服务以及解决方案,专注高校ICT课程课件研发、基于华为公有云的云实验实训平台建设,致力于ICT技术在高等院校的引进、开发和推广,是一家全国性的专业ICT行业技术认证服务公司。
腾科教育是华为授权的培训合作伙伴,专业提供华为ICT技术架构认证、平台与服务认证、行业服务认证等华为职业认证服务,连续多年荣获华为年度最佳合作伙伴贡献奖、华为优秀战略合作伙伴、上海HCIE精英俱乐部伙伴,连续多年举办腾科技术嘉年华华为专场,并协办华为ICT大赛、华为生态伙伴精英赛伙伴赛分赛场、华为人才双选会上海场等活动和赛事,提供面向华为生态合作伙伴和ICT学员的人才供需双选平台及ICT学员就业通道,培养ICT行业所需创新型、融合型人才。