环境:
数据库: AIX5.3下的64位Oracle10.2.0.1.0
TSM5.4:Windows2003
带库:IBM3100
问题描述:
1、 aix系统出现3D32B80D错误。如下:
JTXXDBS01:> errpt |more
IDENTIFIER TIMESTAMP T C RESOURCE_NAME DESCRIPTION
3D32B80D 0203175210 P S topsvcs NIM thread blocked
3D32B80D 0203175110 P S topsvcs NIM thread blocked
3D32B80D 0203175110 P S topsvcs NIM thread blocked
3D32B80D 0203175110 P S topsvcs NIM thread blocked
3D32B80D 0203174810 P S topsvcs NIM thread blocked
3D32B80D 0203174810 P S topsvcs NIM thread blocked
JTXXDBS01:> errpt -aj 3D32B80D|more
---------------------------------------------------------------------------
LABEL: TS_NIM_ERROR_STUCK_
IDENTIFIER: 3D32B80D
Date/Time: Wed Feb 3 17:52:06 BEIST 2010
Sequence Number: 114902
Machine Id: 0005807BD600
Node Id: JTXXDBS01
Class: S
Type: PERM
Resource Name: topsvcs
Description
NIM thread blocked
Probable Causes
A thread in a Topology Services Network Interface Module (NIM) process
was blocked
Topology Services NIM process cannot get timely access to CPU
User Causes
Excessive memory consumption is causing high memory contention
Excessive disk I/O is causing high memory contention
Recommended Actions
Examine I/O and memory activity on the system
Reduce load on the system
Tune virtual memory parameters
Call IBM Service if problem persists
Failure Causes
Excessive virtual memory activity prevents NIM from making progress
Excessive disk I/O traffic is interfering with paging I/O
Recommended Actions
Examine I/O and memory activity on the system
Reduce load on the system
Tune virtual memory parameters
Call IBM Service if problem persists
3D32B80D错误主要是由于整个系统的负载很高,从而导致HA的心跳不能正常通讯造成的。
2、 在备份时,磁盘IO的频繁主要体现在Hdisk0和Hdisk1
从图中看出来比较忙的磁盘IO为hdisk1和hdisk0,内存比较忙的为nocomp(非计算内存)。
用lsps –s看,
再看下图:
主要比较忙的hdisk1和hdisk0物理卷AIX的交换空间。但交换空间的使用率却为不足30%。
这里主要说明了AIX的paging space足够,但paging space还是交换很频繁。注意到内存中的nocomp(非计算内存)长达76%。这里的内存长期不释放,导致comp(计算内存)不足,从而频繁的使用paging space
3、 AIX的NMON监控图形
备份时的内存严重不足。
AIX的paging space频繁交换。
具体原因:
这是由于每天22:00数据库进行rman备份,磁盘的IO很频繁,AIX系统的IO分别磁盘的输入、输出和Paging Space(交换空间)的输入、输出,这里备份主要体现在paging space的频繁操作。其中非计算内存达到76%,长期不释放内存。根本原因是非计算内存长期不释放,AIX内存缺少,导致了Paging Space交换频繁。从而导致系统的负载比较高。
限制AIX的nocomp(非计算)内存最大值。
把AIX的
minperm% = 20
maxclient% = 80
maxperm% = 80
调整更低。
解决步骤:
查看原来的AIX的minperm%、maxclient%、maxperm%的值。如下:
Root用户查看:
>vmo –a
minperm% = 20
maxclient% = 80
maxperm% = 80
把minperm%设置成10,maxclient%设置成20,maxperm%设置成20
用root命令行执行:
1、
vmo -o minperm%=10
2、
vmo -o maxclient%=20
3、
vmo -o maxperm%=20
改变maxperm%为20,再次备份时,不再发生3D32B80D错误。
备注:
minperm 和 maxperm 参数的值
操作系统通过把在曾经读写的内存页留在实内存一满足不同要求。如果文件页面在它们的页帧被重新分配前被请求,那就节省了输入输出操作。该文件页面可以来自本地的或远程的(如 NFS)系统。
页帧使用的文件相对用于计算的(工作或程序文本)段的文件的比例是松散地受控于 minperm 和 maxperm 的值的:
如果 RAM 中文件页面所占的百分比高于 maxperm,页面替换的窃取只用于文件页。
如果 RAM 中文件页面所占的百分比低于 minperm,页面替换的窃取同时用于文件页和计算页。
如果 RAM 中文件页面所占的百分比介于 minperm 和 maxperm之间,页面替换只窃取文件页,除非文件页的重调入数量大于计算页数。
其中Noncomp在20%-80%之间,此时内存页交换算法通常只交换文件缓存页,但如果文件缓存页的交换率大于程序页时,程序页也同样被交换。由于SGA属于Comp页,数据文件缓存属于Noncomp页,而在数据大量访问时,文件缓存页的交换率大于程序页(SGA),因此大量的SGA页面被交换;为避免大量SGA页被交换,需要降低maxperm%值到35%以下,这样就只有文件缓存页面被交换,减少了SGA交换的次数。
5)结论
调整maxperm%和minperm%的值,可以将MINPERM和MAXPERM分别设为5%和20%甚至更小,从而使内存更多地被用于Oracle的SGA而不是系统的文件缓存。
具体命令:# vmo -o minperm%=5 -o maxperm%=20
注意:加-p参数可以永久更改系统的配置,否则只改动当前的系统配置,重新启动后则失效。