性能监控策略
注:以下是在前期初步了解兴业银行卡前置系统后,我们基于逐层分析法总结的监控方法,及一些简单的调优分析建议,可供现场的两位性能工程师参考,具体如下:
⏹ 启动rstatd守护进程
Loadrunner监控AIX操作系统所依赖的服务为rstatd服务,AIX操作系统默认该服务器是关闭的,启动该服务步骤如下:
使用root用户登录AIX操作系统;
进入/etc目录下,编辑inetd.conf文件(vi /etc/inetd.conf),打开inetd.conf文件后,在该文件中查找rstatd的行(/rstatd),即可查找到如下显示的行:
#rstatd sunrpc_udp udp wait root /user/sbin/rpc.rstatd
在上面的行中,删除注释符(#),然后退出,并保存inetd.conf文件
如果rpc服务端口屏蔽,进入etc/rc.tcpip,编辑154行左右,start/user/sbin/portmap
#src-running
是否被注释掉,取消
启动rpc端口 startsrc -s portmap
stopsrc -g nfs
startsrc -g nfs
启动inetd服务即可,如下:
# refresh -s inetd
查看rstatd是否启动,如下命令,如显示rpc.rstatd服务表示已经启动。
#rpcinfo –p
⏹ 配置Loadrunner的Unix监控包
选择UNIX Resources拉进监控栏中,点击右键选择Add Measurements
点击第一个“Add”按钮,输入监控的unix服务器的IP
点击第二个“Add”按钮,选择需要监控的性能指标,如下:
点击“OK”按钮,即可收集Unix的系统资源指标,如下:
LR for Unix监控器配置到此结束。
指标类型 | 指标名称 | 指标描述 | 分析(调优参考) |
CPU | CPU utilization CPU | CPU 的使用时间百分比 | CPU利用率正常值:70%左右 如果持续在90%以上说明CPU是瓶颈 |
System mode CPU utilization | 在系统模式下使用 CPU 的时间百分比 | ||
User mode CPU utilization | 在用户模式下使用 CPU 的时间百分比 | ||
Memory | Page-in rate | 每秒钟读入到物理内存中的页数 | |
Page-out rate | 每秒钟写入页面文件和从物理内存中删除的页数 | 尽可能的越少越好,有少量Page-out说明内存不足,大量的Page-out说明内存严重匮乏 | |
Paging rate | 每秒钟读入物理内存或写入页面文件的页数 | ||
Disk | Disk Traffic | 磁盘交换率 | |
Network | Incoming packets rate | 每秒钟传入的以太网数据包速率 | |
Outgoing packets rate | 每秒钟传出的以太网数据包速率 | ||
Incoming packets error rate | 每秒钟传入的以太网数据包错误率 | ||
Outgoing packets error rate | 每秒钟传出的以太网数据包错误率 | ||
Interrupt rate | 网络中断率 | ||
主要使用Tuxed命令进行指标收集,主要命令为:pq
收集指标如下:
指标类型 | 指标名称 | 指标描述 |
显示该系统的 队列信息 | Queue Name | 消息队列名 |
Serve | 连接的服务数 | |
Wk Queued | 消息队列的当前负载量(当前队列的所有请求的参数和) | |
Queued | 消息队列的当前实际请求数 | |
Ave.Len | 消息队列的平均长度 | |
Bytes on queue | 正在队列中等待的所有消息的总字节数 | |
Messages on queue | 队列中正在等待的总请求数。默认情况下为 0 | |
当前连接到tuxedo的客户信息 | Client Name | 客户进程名 |
Time | 客户进程处在Staus的时间 | |
Status | service的状态,IDLE/BUSY | |
Bgn/Cmmt/Abrt | 启动/提交/中断的交易数 | |
主要使用onstat命令来捕捉informix性能参数,操作步骤为:使用informix用户登录系统,然后输入onstat命令加各个参数即可收集相关性能指标,主要收集的指标如下:
主题或功能 | 选项标志 |
显示OnLine活动简要表(profile)统计数据 | onstat -p |
缓冲区,所有使用的或未使用的信息 | Onstat -B |
当前使用中的缓冲区信息 | Onstat -b |
显示关于共享或等待缓冲区的线索的精确信息 | Onstat -X |
显示缓冲区杂凑链信息 | Onstat -h |
配置文件信息($INFORMIXDIR/etc/$ONCONFIG) | onstat -c |
显示各Dbspace中chunk常用信息 | onstat -d |
显示各Dbspace中前50个chunk的页读入/写出信息 | onstat -D |
交互方式 | onstat -I |
显示latch的常用信息 | onstat -s |
显示关于活动锁的信息 | onstat -k |
日志信息(逻辑日志和物理日志,包括页地址) | onstat -l |
显示LRU队列,FLRU队列,MLRU队列的详细信息 | onstat -R |
监控多线索等信息 | onstat -g |
显示OnLine系统消息日志的最后20行内容 | onstat -m |
周期性地重复onstat命令 | onstat -r |
将当前共享内存段的副本存储到一个指定的文件中 | onstat -o |
面向用户(小写)选项汇总 | onstat -a |
显示活动tblspace的常用信息 | onstat -t |
显示事务信息 | onstat -x |
用户线索和事务 | onstat -u |
显示页刷新到磁盘时发生的各种写操作类型计数信息 | onstat -F |
将所有统计计数置0(清空简要表统计) | onstat -z |
等同于onstat–cuskbtdlp | onstat -a |
常用的关键参数:
$ onstat –p
主要查看buffer读/写命中率,锁使用情况,死锁(deadlks)、锁等待(lokwaits)、bufwaits等等 buffer命中率一般要高于90%
$onstat -l
主要查看物理和逻辑日志
$onstat -F
主要查看内存LRU管理情况
以下是以前项目关注的性能指标,及调优结果,可供参考,具体如下:
注:informix性能参数配置文件一般为:/Informix/etc/onconfig.xyk
调优参数 | 调优参考 | 备注 |
调整数据库逻辑日志的数量和大小 | 将LOGFILES调整成30 将LOGSIZE调整成10000 | |
调整物理日志空间大小 | 将physfile大小调整为500000 K | |
调整锁的大小 | 将锁大小调整为1000000 | |
调整Buffers的大小 | 调整为物理内存大小的1/4 | |
调整CLEANERS值的大小 | 将默认的128调整成8 | |
调整LRUS值的大小 | 将默认的128调整成8; 将LRU_MAX_DIRTY调整成95; 将LRU_MIN_DIRTY调整成85; | |
调整一些表的运行模式 | 某些表建立索引; 某些表的表锁调整成行锁 | |
方法1:抓取存在问题的执行SQL语句
查找运行threads,输入命令:
onstat –g act
例:显示如下:
onstat –u | grep 8030eab8
注:8030eab8为rstcb字段值
例:显示如下:
onstat –g sql 131047
注:131047为sessid字段值
输入该命令后,即可捕捉存在问题的SQL语句。
方法2:抓取所有执行的SQL语句
输入命令:onstat –g sql 0即可获取所有执行的sql语句
注:上面的0代表数字零,不是字母。
锁表处理步骤:
1、onstat -ks|grep HDR+X //重查询是那个表被锁
address wtlist owner lklist type tblsnum rowid key#/bsiz
c1809510 0 d656e774 c181cb3c HDR+X 6002e1 2c602 0
需要关注lklist和type项,从上面来看tblsnum为6002e1(6292193十六进制转换成十进制)
的表被锁了。可以重查询是那个表被锁:
dbaccess :select * from systables where partnum='6292193'得到
tabname basetab_mvpn
owner smpmml
partnum 6292193
tabid 12813
rowsize 464
ncols 61
nindexes 1
nrows 2984
created 12/10/2002
version 839843846
tabtype T
locklevel R
npused 746
fextsize 16
nextsize 16
flags 0
2、onstat -u,将owner(address)为d656e774的线程找出来
address flags sessid user tty wait tout locks nreads nwrites
d656e774 Y--P--- 4261 smp20 - d6ad2330 0 180 99620 16
3、onstat -g sql 4261(sessid)可以将这个线程执行过的sql语句打印出来。
4、只要用informix用户执行onmode-z sessid干掉线程
onmode-z 4261
重点说明:onstat -g ses sessid找个进程PID来,然后ps -ef|grep Pid; kill -9 pid
在处理这些问题时还会遇到表被锁是因为该线程还没有执行完毕,此时就不能简单的 onmode -z杀线程
执行update statistics语句的作用就是将您创建的数据库表的有关统计信息更新到系统sysmaster的相关表中(如systables、syscolumns、sysindexes、sysdistrib、sysprocplan等),以便查询优化器选择最佳的执行路径。当sysmaster库中没有相应的统计信息,或者统计信息不十分准确时,优化器便无法制定一个行之有效的查询策略,其结果必然是进行大量极其可怕的顺序扫描,产生严重的性能问题。
整理数据库语法:Update Statistics
(1)update statistics或update statisticslow,对当前数据库中所有表(包括系统表)及过程进行更新统计。
(2)update statistics low for table,对当前数据库中所有表(包括临时表,但不包括系统表)进行更新统计。
(3)update statistics low for table tablename,对指定的表所有字段进行更新统计。
(4)update statistics low for table tablename(column-list),对指定表的指定字段进行更新统计。
(5)如果不带drop distributions,原有字段分布情况依然保留;否则,原有字段分布情况将被删除。
本文来源:https://www.2haoxitong.net/k/doc/4dfb5ef19b89680203d8257d.html
文档为doc格式