DB2数据库性能测试监控.docx
- 文档编号:17691324
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:17
- 大小:305.52KB
DB2数据库性能测试监控.docx
《DB2数据库性能测试监控.docx》由会员分享,可在线阅读,更多相关《DB2数据库性能测试监控.docx(17页珍藏版)》请在冰点文库上搜索。
DB2数据库性能测试监控
DB2数据库-性能测试监控
一.DB2数据库介绍
1.DB2架构介绍
Ø概要介绍
DB2是IBM公司研发的关系数据库产品,目前广泛应用于金融、通信、交通等行业,在IBM随需应变的战略体系中扮演着重要角色。
因为川农信属于金融行业,因此也在使用DB2,其版本为v9.7,所以在这里介绍一些9.7版本的新特性。
●支持索引压缩、临时表数据压缩和xml压缩,更加降低了存储空间成本。
●支持内联大对象。
●在线表迁移功能。
●支持实时表字段更改。
●在性能监控方面DB29.7有了极大增强,新的监控模型不仅可以快速找出问题瓶颈,而且对系统的影响非常小。
特别是对锁的监控,通过新的LockingEventMonitor可同时监控死锁、锁等待和锁超时。
●移植性增强。
●HADR备机可读。
Ø三种常用架构简介
当前的应用系统主要分为两类:
联机事务处理(OLTP)和联机分析处理(OLAP)。
OLTP主要执行日常的事务处理,比如银行存取款、商场购物等,它的主要特点是对响应时间要求高,数据量一般较小,并发多,面向应用。
OLAP主要指数据仓库、决策分析类系统,主要特点是数据量大,对实时性要求不高,面向主题。
针对这两种典型的系统,DB2提供了很好的支持。
对于OLTP系统和数据量较小的OLAP系统,可以采用单分区架构。
但是有一些OLAP系统,比如国内一些通信公司和电力公司的经营分析系统,包含的数据超过几十TB,一台机器的处理性能根本无法满足要求。
这时,可考虑DB2的多分区架构,即SharedNothing架构。
这种架构的优点就是能够充分利用系统资源,将一个大型的查询分解成若干个小查询并行运行在不同的系统中。
由于每一个分区只能够访问自己分区的数据,当查询数据需要关联时。
需要在分区中交换必要的数据,分区之间使用一种叫做FCM(FastCommunicationManager)的通信机制。
这种架构对系统设计人员要求较高,一定要充分理解优化器与系统访问数据的规则,并且设计很好的分区键,才能够尽可能避免分区间大量的数据交换。
与Share-Nothing相对的另外一种常见的架构是Share-Disk。
Share-Disk架构允许所有机器都可以访问全部的数据,好处是管理起来相对方便,而且任意一台机器宕机后,只要存储部分不出问题,其他机器上的系统可以照样访问数据。
Share-Disk的设计目标主要是提供高可用性,一般用于OLTP系统。
2.主要模块介绍
上图描述了DB2的进程模型,长方形代表处理进程,椭圆形代表处理线程,DB2的主进程是db2sysc,在这个处理进程下有许多线程,最主要的线程也是叫db2sysc,这个主要的线程派生了其他子线程。
当一个远程的应用程序比如采用sqlconnect语句链接服务器时,通讯协议的远程监听器将接收这个请求,并联系db2agent,agent是一个代表DB2实现一些小操作的处理程序,当发出请求的应用程序是本地的,也就是和DB2服务器在同一服务器上,如果不在同一个服务器上,那么采用db2tcpcm处理本地请求,如果在一台服务器上采用db2ipccm线程来处理请求。
如果发生本地和异地并行的情况,db2agent会生成其他线程的代理db2agntp线程。
其他的线程如db2pfchr、db2loggr、db2dlock它们应用到不同的目的。
3.主要进程介绍
Ødb2sysc(Linux)db2syscs(Win)
DB2的主系统控制器或者引擎,对于一个完整的分区其中只有一个包含多线程的主引擎进程。
所有的引擎可以分派单元都是进程中的线程。
没有这个进程数据库服务器是无法工作的。
Ødb2acd
主管运行状况监视器和自动维护实用程序的自主计算守护程序。
此进程以前称为db2hmon
ØDb2wdong
DB2的看门狗,是db2sysc的父进程。
如果db2sysc集成非正常终止,它将清除所占用的资源。
ØDb2vend
在主进程之外的围栏进程,所有db29.5的第三方代码都在这个进程中运行。
ØDb2fmp
围栏进程,在防火墙外运行用户的存储程序和用户定义函数代码。
此进程代替了db2老版本中的db2udf和db2dari进程。
4.主要线程介绍
ØDb2sysc
系统控制线程。
负责实例的启动关闭和管理正在运行的实例。
ØDb2tcpcm
tcoip交互监听器
ØDb2agent
协调代理代表应用程序实现数据库操作
ØDb2agntp
如果intra-parallel的属性是yes,那么会产生活动的副代理。
它会为应用程序执行数据库操作。
Dbagent将协调不同的db2agntp副代理的工作。
ØDb2pfchr
db2异步io数据读取
ØDb2pclnr
db2异步io数据写入
二.DB2数据库配置参数
收集性能测试项目中DB2数据库一些参数的最佳配置或DB2官网的推荐配置。
1.监控开关参数
Db2数据库默认情况下,监控参数一部分是处于关闭状态的,因此在需要监控数据库时,需打开部分监控,命令如下:
Ø查看当前监控开关配置情况:
Db2getdbmcfgon为开启off为关闭
Ø修改某项开关的配置:
Db2updatedbmcfgusingDFT_MON_BUFPOOL=on--开启缓冲池的监控
Db2updatedbmcfgusingDFT_MON_BUFPOOL=off--关闭缓冲池的监控
建议:
因监控需消耗系统资源,尽量减少对数据库性能的影响,建议开启需要监控项的监控开关。
Ø锁事件提醒级别查看及配置:
db2getdbcfg|grepMON_LCK_MSG_LVL返回当前数据库的配置,其中
0为不记录信息
1为仅记录错误
2记录服务和非服务错误
缺省是3,记录db2的错误和警告
4是记录全部信息,包括成功执行的信息
修改返回信息级别:
Db2updatedbcfgMON_LCK_MSG_LVLusing3--将级别改为3
2.影响数据库性能参数
Ø查看当前数据库缓冲池页信息:
db2"selectbpname,npages,pagesizefromsyscat.bufferpools"
返回数据库缓冲池名、缓冲池页数、页大小
若数据库缓冲池使用自动增长方式,上述指令不能查询到缓冲池的页数,建议使用以下方式查看:
使用Spogtight连接需要监控的数据库,使用快捷键ctrl+p切换到数据库缓冲池信息页,其中size显示当前缓冲池大小、缓冲池页数。
Ø数据库缓冲池大小修改:
alterbufferpoolbp4kimmediatesize1010将缓冲池BP4K的页数调整到1010
建议:
将BUFFPAGE设置成40000个页(160MB),或者等于机器总内存的10%,或将bufferpool设置成自动增长。
Ø表空间信息查看
Db2pd–dscnx_db–tablespaces显示表空间信息
重点关注数据库使用了哪些表空间、表空间的页数、页大小、已使用多少页、剩余多少页、是否自动增加
建议:
根据表的大小设置不同规格(4k、8k、16k、32k)的表空间,将表空间设置为自动增长的方式。
Ø锁配置信息查看
Db2getdbcfg|grep–ilock
获取LOCKTIMEOUT这项指标的值,若为-1表示锁永远不会超时。
建议:
根据业务需求,修改锁超时时间。
Ø修改锁超时时间
UpdatedbcfgLOCKTIMEOUTusing1---表示锁等待超时时间为1秒
Ø数据库最大应用数
Db2getdbcfg|grep–iapplications返回MAXAPPLS
建议:
将此指标值设置为自动增长
Ø最大应用数修改方法
Db2updatedbcfgMAXAPPLSusingAUTOMATIC
建议:
使用将最大值修改为自动增长
Ø代理应用程序数
db2-vgetsnapshotfordbm|grep-i"agent"返回agent相关信息
idleagent显示空闲代理数量;
agentsassignedfrompool一个代理分配的次数;
agentscretedfromemptypool空闲情况下必须创建的代理数量;
建议:
若agentscrestedfromemptypool/agentsassignedfrompool的比例较高(不低于5:
1)则需要增加num_poolagents;
若比例非常低,则暗示num_pollagents可能被设得过大,浪费代理资源。
Ø日志参数查看及配置
db2getsnapshotforallonsortdb|grep-i"log"---查看logpagesread、logpageswriten两项参数
建议:
将logpagesread的值保持在0左右
Ø日志大小及路径配置
Db2getdbcfgfotscnx_db|grep–I“log”---查看日志大小、个数、路径等配置
Pathtologfiles---日志存放路径
LOGFILSIZ---单个日志文件大小
LOGPRIMARY----主日志文件个数
LOGSECOND----辅日志文件个数
在数据库首次连接时,会分配主日志文件个数那么多的日志文件,当主日志文件写完后,启用辅日志文件。
当前日志文件空间配置:
(LOGPRIMARY+LOGSECOND)*LOGFILSIZ*4K
建议:
●日志文件与数据文件分离
●日志空间需充足,否则会影响交易
●日志初始值建议设置成数据库大小的10%-20%
●主辅日志文件个数不要超过255,日志空间大小不要超过256G,且单个不易过大(最好不要超过1G)
Ø修改日志大小方法:
Db2updatedbcfgforscnx_dbusinglogsecond30--将辅日志文件个数修改为30个
三.DB2监控指标
1.测试指南指标
Ø根据《TEST_GUIDE_NFUN_02非功能测试监控指南》整理出DB2数据库在性能测试项目中需监控的指标如下:
指标类型
指标名称
指标描述
DB2
appls_cur_cons
指出当前已连接到数据库的应用程序数
sort_heap_allocated
拍快照时,以所选择的级别为所有排序分配
的排序推空间的总页面数
total_sorts
已经执行的排序总数
total_sorts_time
所有已执行排序的总已用时间(毫秒)
active_sorts
数据库中当前已经分配了排序堆的排序数
log_reads
由记录程序从磁盘读取的日志页数
log_writes
由记录程序写入磁盘的日志页数
lock_waits
应用程序或连接等待锁定的总次数
2.其他指标
Ø根据日常性能测试总结归纳出《监控指南》中现缺少的性能指标如下:
指标类型
指标名称
指标描述
DB2
Overall_hit_ratio
数据库缓冲池命中率
Index_hit_rate
数据库索引命中率
Total_Locks
数据库当前锁总数
Memory_Current_size
数据库当前内存使用大小
Memory_percent_total
数据库内存使用比例
Memory_hight_watermark
数据库内存高水位
Sort_Overflows
数据库排序溢出总次数
SQL_Current
数据库当前执行的SQL语句
Tb_scan
数据库全表扫描的情况
Num_SQ_execut
执行次数较多的SQL
Package_Cache_Ratio
包缓存命中率
LOCK_SQL
造成数据库锁的SQL
Hight_CPU_TIME_SQL
最消耗系统资源的SQL
四.DB2监控方法
根据DB2监控指标中列出的指标名称,按测试指南指标、其他常用指标逐一给出详细的监控方法。
1.常用监控工具配置
●DB2客户端配置
✧安装DB2客户端
✧点击开始,选择IBMDB2---DB2COPY1(缺省值)----命令行工具-----命令行窗口
✧输入DB2并回车
✧执行catalogtcpipnodenode1remote10.0.193.133server60010创建节点,其中node1为节点名、10.0.193.133为数据库服务器地址、60010为开放端口
✧执行catalogdatabasexir_trdatnodenode1为监控数据库分配节点,其中xir_trd为需要监控的数据库、node1为上一步创建的节点名
●Spotlight客户端配置
✧完成DB2客户端的安装及配置
✧点击file选择connect---spotlightondb2LUN----newconnection
✧DB2instance选择配置DB2客户端时创建的节点名
✧DB2database选择配置DB2客户端时指定的数据库
✧DB2user、DB2password中输入连接数据库的用户名和密码,如下图所示:
✧点击OK完成创建
✧选择创建的连接,点击connect,完成连接
●Loadrunner监控配置
✧完成DB2客户端的安装及配置
✧在Loadrunner中选择DB2,选择Addmeasurements
✧配置服务端的地址及选择操作系统类型,地址方式如:
10.0.193.229@node2
✧点击resource下的add按钮,输入数据库账号、密码
✧选择数据库,并在右方选择需要监控的监控项,如下图所示:
●DB2TOP使用方法
使用远程连接工具(如XSHELL)连接到数据库服务器(必须是数据库用户),使用db2connecttoXXX完成连接到XXX数据库;
使用db2top–dxxx实现db2top工具与数据库监控连接;
使用DB2TOP相应命令完成指定项的监控。
2.测试指南指标
Øappls_cur_cons------指出当前已连接到数据库的应用程序数
db2listapplications
Øsort_heap_allocated-------拍快照时,以所选择的级别为所有排序分配的排序推空间的总页面数
db2getsnapshotforallondbname|grepheap|more
Øtotal_sorts--------已经执行的排序总数
db2getsnapshotfordbondbname|grepsorts|more
排序的操作会影响数据库的性能,因此此项指标越低,性能越优
Øtotal_sorts_time------所有已执行排序的总已用时间(毫秒)
db2getsnapshotforallondbname|greptime|more
Øactive_sorts------数据库中当前已经分配了排序堆的排序数
db2getsnapshotfordbondbname|grepsorts|more
Ølog_reads-------由记录程序从磁盘读取的日志页数
客户端创建实例:
1)开始运行cmd
2)cdc:
\programfile\IBM\SQLINB\BIN[进入客户端安装bin目录]
3)c:
\programfile\IBM\SQLINB\BIN>DB2CW.BAT[初始化DB2命令]
4)在新开的cmd中执行“db2catalogtcpipnodetestremote192.168.42.102server50000”[test是自定义的节点名称,也是连接时的实例名称;192.168.42.102是远程连接的主机地址;50000是服务端的端口号]
5)执行“db2catalogdbsmsdbatnodetest”[使节点与数据库绑定,smsdb是需要连接的数据库名称;test是自己创建的节点名称]
6)执行“db2terminate”[使绑定生效]
7)执行“db2connecttosmsdbuseruser_nameusingpassword”[连接数据库成功]
使用loadrunner监测db2数据库:
需要在本机建立到db2数据库服务器的连接,使用db2的client端进行配置就可以了,下边是对loadrunner进行的设置
打开db2资源监控图后选择AddmeaSurements菜单后增加数据的ip和节点名称
如图1
图一
在输入的name框中需要使用数据库的实例名称,这个名称可以通过db2client端的控制中心工具中看到(在建立完到db2server以后就已经存在的),
输入数据库用户名和密码后,即可以选择要监测的项目,最后选择log_reads完成监控配置,如图三所示:
图3
此项指标为数据库从磁盘读的页数,值越大,产生IO的可能性越大
Ølog_writes-----由记录程序写入磁盘的日志页数
方法同log_reads
Ølock_waits----应用程序或连接等待锁定的总次数
db2getsnapshotfordbondbname|grepwaits|more
3.其他指标
ØOverall_hit_ratio----缓冲池命中率
selectsubstr(bp_name,1,30)asbp_name,data_hit_ratio_percent,index_hit_ratio_percent,total_hit_ratio_percentfromsysibmadm.bp_hitratiowherebp_namenotlike'ibmsystem%'
缓冲池的命中率应不低于95%
ØIndex_hit_rate-----某缓冲池索引命中率
●db2getsnapshotforbufferpoolsonscnx_db
●获得某个缓冲池下以下两项指标的值
Bufferpoolindexlogicalreads
Bufferpoolindexphysicalreads
●通过如下公式计算索引命中率
索引命中率 = (1 - ( 缓冲池索引物理读 / 缓冲池索引逻辑读 ) ) ) * 100%
索引命中率应不低于90%
ØTotal_Locks---查看当前系统锁的总数
db2pd-dbscnx_db-locks|grep0x|wc–l统计总数
db2pd–dbscnx_db–locks查看当前系统锁的信息
ØMemory_Current_size当前内存使用情况
●使用db2top–dscnx_db连接到scnx_db数据库
●键入m,查看currentsize栏,显示当前各个内存池的内存使用情况
ØMemory_hight_watermark内存使用高水位
●使用db2top–dscnx_db连接到scnx_db数据库
●键入m,查看hight_watermart栏,显示当内存的高水位
ØSort_Overflows排序溢出的次数
db2getsnapshotfordatabaseonscnx_db|grep-isort
排序溢出数目越低,数据库排序效果越好
ØSQL_Current查看当前数据库执行的SQL
●使用spotlight连接到数据库
●使用快捷键ctrl+s切换到SQL_CURRENT界面,从而查询当前数据库执行的SQL
重点关注SQL耗时
Ø查看数据库全表扫描的情况
db2pd-dbscnx_db–tcbstats其中scans显示某表被全表扫描的总次数
Ø查询造成锁的SQL语句
db2"selectAGENT_ID,substr(STMT_TEXT,1,60)asSTMT_TEXT,STMT_ELAPSED_TIME_MSfromtable(SNAPSHOT_STATEMENT('SCNX_DB',-1))asBwhereAGENT_IDin(selectAGENT_ID_HOLDING_LKfromtable(SNAPSHOT_LOCKWAIT('SCNX_DB',-1))asAorderbyLOCK_WAIT_START_TIMEASCFETCHFIRST20ROWSONLY)orderbySTMT_ELAPSED_TIME_MSDESC"
Ø监控执行次数最多的SQL
Selectnum_executionsas“numexecs”,average_execution_time_sas“avgtime(sec)”,stmt_sortsas“numsorts”,sort_per_executionas“sortsperstmt”,substr(stmt_text,1,35)as“sqlstmt”fromsysibmadm.top_dynamic_sqlwherenum_executions>0orderby1descfetchfirst5rowsonly
Ø包缓存命中率监控
使用spotlight连接到目标数据库后,在首页便能获取数据库当前packagecachehitrate的值。
建议:
若系统是静态的或没有应用开发,可以考虑减少CatalogCache的内存分配,
若为统计系统则需要增大CatalogCache的分配
Ø引起锁的SQL监控
selectAGENT_ID,substr(STMT_TEXT,1,60)asSTMT_TEXT,STMT_ELAPSED_TIME_MSfromtable(SNAPSHOT_STATEMENT('adms',-1))asBwhereAGENT_IDin(selectAGENT_ID_HOLDING_LKfromtable(SNAPSHOT_LOCKWAIT('adms',-1))asAorderbyLOCK_WAIT_START_TIMEASCFETCHFIRST20ROWSONLY)orderbySTMT_ELAPSED_TIME_MSDESC
Ø最消耗CPU资源的SQL
select(total_usr_cpu_time+total_sys_cpu_time)astotal_cpu_time,substr(stmt_text,1,256)asstmt_textfromtable(snap_get_dyn_sql_v91('',-2))assorderbytotal_cpu_timedescfetchfirst10rowsonly
五.项目实践
收集实际性能测试项目中对DB2数据库的监控、调优的思路或方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 数据库 性能 测试 监控
![提示](https://static.bingdoc.com/images/bang_tan.gif)