SHOUGOSWatcher OSW监控工具.docx
《SHOUGOSWatcher OSW监控工具.docx》由会员分享,可在线阅读,更多相关《SHOUGOSWatcher OSW监控工具.docx(33页珍藏版)》请在冰豆网上搜索。
SHOUGOSWatcherOSW监控工具
OracleDBA必备技能-
使用OSWatcher(OSWBB)工具监控OS系统性能负载
******
建立日期:
Jan30,2015
更新日期:
Jan30,2015
文档控制
变更记录
日期
作者及更新人
版本号
变更信息
30-Jan-15
汪伟华
1.0
Initial
审阅人
版本号
审阅人
职位
相关评论
1.0
SHOUG
审批人
版本号
批准人
日期
相关评论
文档分发
分发号
文档名
分发位置
1
SHOUG/Public
简介
为什么使用OSWatcher?
•OSWatcher是Oracle开发并推荐的一种系统工具。
它能用于辅助监控系统的资源使用情况。
•如果没有安装OSWatcher工具或其OSW数据不可用的情况下,我们就不得不靠自己去尽可能多地收集相关信息以完成诊断工作。
•如果客户有通过其他工具获取类似系统统计信息,那么我们就需要通过那些信息以完成诊断。
•由于OSWatcher是针对运行Oracle关系型数据库服务器,用于侦查系统资源问题而量身订做的一种工具,且Oracle支持工程师也对分析OSW的统计数据更为熟练。
因此OSWatcher的使用也更受欢迎及推荐。
编写目的
•对于如何使用OSWatcher来诊断系统资源及调度(scheduling)问题进行概述。
•对于如何使用OSWatcher来解决节点重启/应用集群(RAC)性能问题进行概述。
概述及使用
OSWatcher概述
•OSWatcher(OSW)工具实际是由一系列相关Unixshell脚本和Windows批处理文件组成。
它们被用来收集归档系统和网络计量信息,以此来辅助支持诊断性能问题。
•OSW的操作会开启一些服务器后台进程用以定期收集与各个功能相关的操作系统数据。
•可以从”OSWatcherUsers’Guide”中找到基于Unix平台的OSW工具下载地址–请看文档:
301137.1
•可以从“OSWatcherForWindowsUserGuide”中找到基于Windows平台的OSW工具下载地址–请看文档:
433472.1
•OSW工具也包含在RAC-DDT工具中,但作为可选组件并不会被RAC-DDT直接安装-请看文档“RACDDTUserGuide”:
301138.1
•OSW需要被安装在每个需要进行数据收集的节点。
•支持平台(OSW已被认证可运行于以下平台)–
Unix操作系统(OSwatcher版本号2.1.2)
AIX
Tru64
Solaris
HP-UX
Linux
Windows(XP,2003)
OSWatcher安装(Unix)
•从OSWatcherUsers’Guide(文档:
301137.1)下载oswbb.tar文件。
•拷贝文件到需要安装OSW的每个节点下的一个目录中。
•运行”tar–xvfoswbb.tar”命令以提取/安装OSW。
OSWatcher:
以下列出的解压后oswbb文件夹下的脚本文件
OSWatcher-在Unix平台上的启动/停止/卸载
•启动OSW-
./startOSWbb.sh6010
启动osw工具以每60秒间隔收集一次数据并将最近10小时的数据记录入归档文件中。
./startOSWbb.sh
如果对此脚本运行不设参数,则默认设定为3048。
也就是说以每30秒进行一次数据收集并在归档文件中保存最近48个小时的相关数据。
nohup./startOSWbb.sh6010&
使用以上命令可让OSW能够在后台持续运行并在当前会话终止后不会被挂断。
•停止OSW–
./stopOSWbb.sh
以上命令是Oracle唯一支持的用于停止OSW的方法。
•卸载OSW-
rm–froswbb
•OSWatcher输出文件格式-<节点名>_<操作系统工具名>_YY.MM.DD.HH24.dat
如-_vmstat_14.07.27.1000.dat
在Unix平台上启动OSWatcher
•当OSWatcher被首次启动时,其归档文件夹和osw<工具名>子文件夹会被建立。
•除了Linux还会产生oswslabinfo和oswmeminfo子目录外,其它所有Unix平台的子目录结构都几乎相同。
OSWatcherWindows(OSWFW)概述
•在Windows操作系统中,运行OSW实际上是执行一个带有各种计数器的logman工具命令的批处理文件。
•OSWatcherforWindows(OSWFW)已经对以下运行平台进行了认证:
WindowsXP
Windows2003
•主要的控制执行文件是"OSWATCHER.BAT"文件,它会使用Windowslogman工具建立并调度独立的计数器以收集特定类型数据。
(Logman能够用于管理"性能日志和警告"服务以建立和管理事件追踪会话日志及性能日志。
如:
logmancreatecounterperf_log-c"\Processor(_Total)\%ProcessorTime")
•可通过以下命令来安装OSWFW相关文件
C:
\>unziposwfw.zip
•启动OSWatcher–
C:
\>oswatcher6010
•停止Oswatcher
C:
\>oswatcherstop
•使用以下命令以卸载OSW及其相关目录:
C:
\>oswatcherstop
C:
\>del/sosw
•输出文件名为:
%计算机名%_OSW<性能对象>_MMDDHHMM_nnn.csv
•发送文件给技术支持
压缩打包归档目录并上传给Oracle技术支持。
OSWatcher-shell脚本概述
为主要控制执行脚本并负责产生数据收集进程。
可以通过运行startOSWbb.sh来启动此程序
./OSWatcher.sh$1$2$3$4&
$1=以秒为单位的快照间隔时间
$2=保存多少小时的归档数据
$3=(可选)你希望使用的打包压缩工具,在完成收集后OSW将使用其来打包压缩归档文件
$4=(可选)archive目录地址,程序会首先查找系统变量OSWBB_ARCHIVE_DEST,如果未设再看$4是否有设置,如果仍为设置则保存文件至oswbb目录下默认路径。
PLATFORM=`/bin/uname`
case$PLATFORMin
AIX)
kill-15`ps-ef|grepOSWatch|awk'{print$2}'`
;;
*)
kill-15`ps-e|grepOSWatch|awk'{print$1}'`
;;
esac
OSWatcher.sh会调用此文件管理脚本程序。
每1分钟,程序会醒来并查看当前小时时间是否已改变。
如果我们进入新的一小时,程序会查看有多少文件被归档并移除那些超出(归档间隔时间)设定的归档文件。
以下是其代码片断=
numberOfFiles=`ls-tarchive/oswvmstat|wc-l`
numberToDelete=$numberOfFiles-$archiveInterval
if[$numberOfFiles-gt$archiveInterval]
then
ls-tarchive/oswvmstat/*|tail-$numberToDelete|xargsrm
例如-
ls-larchive/oswvmstat|wc-l=50
我们希望归档最近48小时数据=48(归档间隔)
删除50-48=最后2个文件.
脚本会被OSWatcher.sh调用.此脚本会连着运行2个netstat命令.
•netstat-a-i-n>>$1
•netstat-s>>$1
脚本会被OSWatcher.sh调用.此脚本是一个通用数据收集shell脚本.第一个参数($1)是设置数据收集器的输出文件名.第二个参数($2)是所要执行的操作系统工具.
•echo"zzz***"`date`>>$1
•$2>>$1
•例如:
./oswsub.sharchive/oswiostat/mbs1_iostat_09.01.04.0200.datiostat13
•此脚本生成tarball格式打包文件,压缩并上传Oracle技术支持.
tarcvfosw_archive.tararchive
compressosw_archive.tar
hour=`date+'%m%d%y%H%M.tar.Z'`
mvosw_archive.tar.Zosw_archive_$hour
•不同平台之间,操作系统工具命令(如top,ps,vmstat,iostat,mpstat)输出可能不同.
•针对在客户操作系统下OSW使用的操作系统命令,我们需要很谨慎地查询(man)下相关命令手册,这是因为你总可能发现一些小区别(系统偏好),但这往往会导致你做出错误的结论.
例如:
Linux平台上的vmstat输出:
procs-----------memory-------------swap-------io------system-------cpu------
rbswpdfreebuffcachesisobiboincsussyidwast
000254384346096958304004194536019900
10025438434609695830400636114615780010000
00025443234609695830400218111714390010000
Solaris平台上的vmstat输出:
procsmemorypagediskfaultscpu
rbwswapfreeremfpipfrdesrs0s1s2s3insycsussyid
00011456412014119130204004811213041482
001101324280044400000230021123014433562
OSWatcher相关输出
对应操作平台不同输出有所不同
eg;iostat
iostat命令被用于检测统计系统i/o。
以该信息为分析依据,改变系统设置以更好得平衡在物理磁盘和适配器之间的输入/输出负载.
iostat-xtc52(Solaris)
extendeddiskstatisticsttycpudiskr/sw/sKr/sKw/swaitactvsvc_t%w%btintoutussywtid
sd02.63.020.722.70.10.259.269084385110
sd14.21.033.58.00.00.247.2223
sd310.21.651.412.80.10.331.2331
在输出中,我们需要关注什么?
在iostat他他输出中我们需要关注的值有:
•每秒完成的读/写I/O设备次数(r/s,w/s)
•设备平均繁忙度(%b)
•平均服务时间(svc_t)
如果输出显示当前磁盘正持续保持高读写度且平均服务时间(svc_t)超过30毫秒,那么我们需要采取以下行动–
1)调节应用以更有效使用磁盘输入输出
2)将文件移至其它i/o更快的磁盘/控制器或者直接替换i/o性能更佳的磁盘/控制器。
OSWMEMINFO(Linux)
通过检查/proc/meminfo可以确实诊断内存不足和碎片化问题。
-以上截图相关系统使用4GBRAM和6GBSwap空间。
在/proc/meminfo文件中的几个主要参数(依版本不同有所不同)-
•HighTotal:
高位区在内存中所占总量.高位内存区(Highmem)是指物理内存中高于(大约)860MB的所有内存.数据缓冲可以存放于这片内存区.
•LowTotal:
非高内存区内存所占总量.
•LowFree:
低位内存区中的空闲内存总量.其内存可以被系统内核直接定位到.所有内核数据结构都需要在低位内存区中存放.
•SwapTotal:
物理交换内存总量.
•SwapFree:
空闲交换内存总量.
•HugePagesize:
在内核中大页内存的配置大小.
单个大页内存的可变大小取决于内核版本和linux发布的硬件平台。
例如-LinuxItanium(IA64)-256MB,Linuxx86-64(AMD64,EM64T)–2MB
•在特定系统中大页内存的实际大小可通过以下命令查看:
$grepHugepagesize/proc/meminfo
OSWMPSTAT
•mpstat命令生成的报告信息可被用于判断当前进程负载是否均匀分布在每一个已存进程中,其多进程服务器是否正被有效利用。
•系统活动情况报告(SAR:
SystemactivityReport)是除了mpstat命令之外,另一种可用命令。
在HP-UX平台上OSWatcher常使用SAR工具命令。
使用OSWatcher:
OSWMPSTAT
Solaris输出=
CPUminfmjfxcalintrithrcswicswmigrsmtxsrwsysclusrsyswtidl
0000483383118100064000100
0126800486382414420002902824068
0400479379144300096000100
在mpstat中的几个关键统计值-
•icsw–当检测性能问题时,icsw是一个更相关的统计参数。
强制的上下文转换常发生在当进程/线程在其时间片持续执行时或当系统确定有更高运行级别的线程需要去运行时。
强制上下文转换(Involuntarycontextswitches)产生意味着存在CPU的争用情况.
•Smtx–CPU获取互斥锁(mutex内存锁)的失败次数.NumberoftimesaCPUfailedtoobtainamutex(memorylock).当其值超过平均每CPU200次的话会导致系统时间的增加。
•xcal–显示进程的交叉调用情况(当一个CPU通过打断的方式调用另一个进程)。
如果其值超过200次每秒,那么就说明需要检查这个有问题的应用了。
OSWNETSTAT
netstat命令显示当前TCP/IP网络连接和其相关协议的数据统计。
netstat中的几个重要统计值-
•冲突Collisions(Collis),输出包Outputpackets(Opkts),输入错误Inputerrors(Ierrs),输入包Inputpackets(Ipkts)
•网络冲突率(NetworkCollisionRatio)=Collis/Opkts(不应该超过10%)高冲突率意味着网络处于饱和状态。
•误包率InputPacketErrorRate=Ierrs/Ipkts.
如果主机丢包严重,误包率很高(超过百分之0.25).那么就需要检查其相关集线器/交换器电缆等是否存在潜在问题。
在大部分UNIX平台,判断当前是否存在UDP端口缓存溢出和丢包问题.可执行`netstat–s`或者`netstat–su`并按相应平台查找“udpInOverflows”,“packetreceiveerrors”或者“fragmentsdropped(段删除)”的数据统计.
最新文档提供了关于各种网络层问题的大量细节-Note563566.1Title:
gclostblocksdiagnostics
OSWPRVTNET
•私有网络统计被用于检查内联网络是否可达
•$cat_prvtnet_14.07.27.0200.dat
----------------------------------------------
zzz***TueJan614:
00:
02IST2009
traceroutetopd1-priv(172.168.1.191),10hopsmax,40bytepackets
1pd1-(172.168.1.191)0.027ms0.012ms0.009ms
traceroutetopd2-priv(172.168.1.192),10hopsmax,40bytepackets
1pd2-(172.168.1.192)0.128ms0.108ms0.103ms
------------------------------------------------
•请注意:
这个统计值并非被OSWatcher默认收集。
•客户需要手动设置OSWatcher使其对于私有网络进行统计收集,具体请参考OSW文件夹下的E文件.
OSWatcher–启用对私有网络统计信息收集功能
•对私有网络统计收集的设置-
拷贝OSW文件夹下的E文件并重命名为.
删除文件中其它行并保留对你的操作系统所需的行
例如–在Linux平台,文件有以下行信息:
--------------------------------
traceroute-r-F-m10pd1-priv
traceroue-r-F-m10pd2-priv
rmlocks/lock.file
--------------------------------
•请记住保留最后一行-rmlocks/lock.file
•修改后保存文件
•修改模式:
Chmod777以使得此文件具有执行权限
•这样就启用了OSWatcher收集私有网络统计信息的功能.
•如果在建立并修改的同时OSWatcher仍在运行,则我们需要重启OSWatcher以使其功能生效
哪些收集信息是我们需要关注的
•例1:
查看端口是否开启并有应答:
-
traceroutetopd2-priv(172.168.1.192),10hopsmax,40bytepackets
1pd2-(172.168.1.192)0.128ms0.108ms0.103ms
•例2:
目标端并不在直连网络上,所以需要检查目标端地址是否正确或交换机是否在相同的虚拟网络上(或者需要检查其他问题):
Traceroutetopd3-priv(10.0.0.1),10hopsmax,40bytepackets
traceroute:
hostpd3-privisnotonadirectly-attachednetwork
•Example3:
网络不可达(需检查路由表)
traceroutetopd3-priv(10.0.0.1),10hopsmax,40bytepackets
Networkisunreachable
•Example4:
在Linux上启用了IPTables/防火墙–请在Linux上禁用IPTables
traceroutetopd3-priv(10.0.0.1),30hopsmax,46bytepackets
Icmpchecksumiswrong
OSWPS
ps(进程状态processstate)命令列出了所有当前运行在系统上的进程并提供了关于CPU消耗,进程状态,进程优先级等信息。
在ps命令输出中我们需要关注哪些?
-
•ps命令的输出信息将主要用于对于RAC的诊断。
•进程状态为S表示睡眠状态(sleeping),D表示不可中断的闲置状态(uninterrupted),R表示运行状态(running),T表示停止状态/被追踪状态(stopped/traced),而Z则表示僵尸状态(zombie).
•实例/系统崩溃前的进程状态可能有助于原因的分析。
例如.-PS命令输出中有进程显示“T”表示其进场当前处于停止状态或者被追踪状态.
240001Toracle40019741060202debdf51010660808Aug-906:
58ora_lms1_srs1
•进程优先级(PRI,NI)设定值也很重要(如查看LMS进程优先级)
如-ps-efc|greplms(在Solaris系统中)-
oracle180981RT100May23?
39:
30ora_lms1_IEI10TRN2
OSWSLABINFO(Linux)
/proc/slabinfo–内核slab分配器统计信息.
在Linux内核中频繁使用的SLAB分配对象(缓冲区头bufferheads,索引节点inodes,目录项dentries等)都会进行缓存存储。
OSWTOP
top命令能够实时显示运行系统中各个进程的资源占用状况。
top命令输出中有哪些需要关注?
-
负载均值(Loadaverage)是指在运行队列中进程的平均