oracle占用内存不释放_IPS专家秘籍第七期:AIX 内存参数调整案例

问题现象

环境描述

−双节点的RAC集群,OS版本:AIX 7.2TL3SP3,Oracle版本 18.6

异常描述

−在任意一个节点shutdown abort本节点的instance时:

1) 通过SCAN服务尝试连接的客户端会hang;

2)通过另一节点VIP服务尝试连接的客户端也会hang;

3)已连接的session查询、insert等操作正常,但commit的时候就会hang;

4)alert log日志中,有如下信息:

Warning: 434 processes are still attacheded to shmid 214959281:

−从系统层面看,在一个节点进行oracle shutdown abort后,进程很快被停止,但共享内存的释放却花了不少时间。用ipcs -mab可以看到系统释放共享内存的过程。在434个进程的情况下,共享内存释放耗费了大概2分钟,这个过程结束后,客户端接入正常。若进程更多,则等待需要更长的时间。

−因此,主要问题在于:在一个节点的instance异常的情况下,导致了整个业务系统的核心数据库异常挂起达数分钟之久,将严重影响业务的连续性,需要予以解决。

数据收集

1. 找一个10G的空闲空间比如/tmp/trace,cd到该目录,开启trace

#trace -anl -d -C all -T10000000 -L20000000 -o trace.raw

2. 收集进程信息,并trcon开始记录,并重现oracle shutdown abort 耗时30秒问题:

#ps -ekf >> psb.ekf.out

#trcon

重现Oracle shutdown abort慢问题

3. 重现完成之后,停止trace

#trcstop

#ps -ekf >> psa.ekf.out

4. 取回如下信息:

#/bin/trcnm > trace.nm

取回"trace.nm", "/etc/trcfmt", "/tmp/trace"目录下的trace/ps文件.

视乎系统活动状况,trace文件压缩前大小可能在数百兆或数千兆不等;按分区20个VP,160个逻辑cpu(SMT8)计算,trace文件压缩前的总大小不超过3200MB;

分析结论

对所抓取系统跟踪文件的分析和建议,从中可以发现:

−在oracle实施shutdown abort操作后,oracle进程一直在申请、释放VMM relalias内存锁(F1000C0020825CF8,与共享内存相关);虽然锁冲突造成的重试并不高,但单个进程的锁等待时间极长,常常超过3秒。

这一定程度造成了shutdown immediate/abort 时,oracle进程detach共享内存速度较慢。

从现象看,此问题与一个旧APAR相关(需要激活其改进措施):

IV34380: VMM RELALIAS LOCKING TUNABLE TO IMPROVE MMAP/UNMAP PERFORMANCE APPLIES TO AIX 7100-02

https://www-01.ibm.com/support/docview.wss?uid=isg1IV34380

因此,建议修改如下参数,减少锁冲突:

# vmo -p -o force_relalias_lite=1

Setting force_relalias_lite to 1 in nextboot file

Setting force_relalias_lite to 1

经过验证,vmo参数修改后,oracle shutdown abort造成业务hang住数分钟的问题得到解决。

内存vmo参数force_relalias_lite说明

# vmo -h force_relalias_lite

Help for tunable force_relalias_lite:

Purpose:

If set to 0, a heuristic will be used, when tearing down an mmap region, to determine when to avoid locking the source mmapped segment.

Values:

Default: 0

Range: 0, 1

Type: Dynamic

Unit: boolean

Tuning:

This is a scalability tradeoff, controlled by relalias_percentage, possibly costing more compute time used. If set to 1, the source segment lock is avoided whenever possible, regardless of the value of relalias_percentage.

附录:trace日志

数据库shutdown abort命令键入后,执行exit退出的oracle进程示例1:

7bedde3df3ed770e7cc0e840e8fc2dbb.png

数据库shutdown abort命令键入后,执行exit退出的oracle进程示例2:

60bfadc49896f24b8af94e68dc88e82c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值