[转帖]Oracle大页未正常使用导致大量SWAP案例分析

oracle,正常,使用,导致,大量,swap,案例,分析 · 浏览次数 : 0

小编点评

**由于memlock资源限制,不同的启动方式会影响大页的生效。** * **集群将实例带起来,数据库能正常使用大页** * **使用集群管理命令启动数据库,数据库也能正常使用大页** * **使用startup 命令分别启动数据库(大页未生效)** 在未设置 memlock 资源限制的情况下,集群将实例带起来并使用 startup 命令启动数据库,但由于memlock限制,大页无法被正常使用,导致系统O OM 的出现。

正文

http://blog.itpub.net/30310891/viewspace-2927363/

稀奇古怪的..

 

故障背景

某次,用户反馈一套已经正常运行一段时间的 Oracle  11.2.0.4 RAC 数据库( 128G 物理内存),在调整 process 阈值之后, R AC 集群中其中一个节点出现系统卡慢现象,甚至本地 sql plus 登录也很缓慢,并且随后出现实例宕机故障,故障前的典型特征是可用物理内存耗尽并出现大量 S WAP 交换。

故障描述

( 1 ) 2 号新环境投产后连接数提高了 30 倍, 6 号数据库连接数暴涨,业务和开发建议扩大数据库连接数。此时运行均正常。

( 2 ) 8 号晚上将数据库连接数有 2000 调整为 4000 ,出现偶发集群可用率为 50% ,和 1 节点连接中断告警。

( 3 ) 10 号中午将连接数参数有 4000 回退为 2000 。

( 4 ) 11 号凌晨还是出现集群可用率为 50% ,和 1 节点连接中断告警,会自愈但是机器使用卡顿。

( 5 )根据 M OS 调整信号量 (Doc ID 2041723.1)

ifconfig lo mtu 16436

( 6 )调整后仍然复现,排查后最终确定为系统大页未生效,进而导致服务器 O OM ,设置系统资源限制 memlock 后解决问题。

诊断过程

用户 反馈 监控 报错,错误如下:

  

查询 后台日志 :

  

根据 MOS, 调整参数( Oracle Linux: ORA-27301:OS Failure Message: No Buffer Space Available (Doc ID 2041723.1) )

  

 

1
2
3
4
修改内核参数
vm.min_free_kbytes
修改网络MTU值
ifconfig lo mtu 16436

 

运行一段时间后,内存仍长时间占有:

  

  

  

  

 

此时其实已经可以确定大页尚未生效问题。

  

查看后台日志中进一步确定。

 

分析到此处,其实问题已经能看的很清楚了, 操作系统层面配置了大页 1 60GB ,这部分内存会从物理内存中直接分配掉,正常情况下该内存空间可用于数据库 S GA ,但是从数据库 alert 告警日志中却看到大页的使用是 0KB ,因此数据库 S GA 和 P GA 的内存空间还要额外的从物理内存中分配,一旦并发或连接数上来了,物理内存耗尽导致大量 S WAP ,进而导致性能出现瓶颈。

修改 memlock 资源限制,并 重启数据库实例后,业务及内存使用均恢复正常。因此,本次故障,是由于 memlock 配置不规范造成的。

 

1
2
3
shell> vi /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited

 

那这就带来了新的问题,这套 Oracle  RAC ,在 业务调整前,在 同样没有设置 memlock 限制的情况下,为啥没有出现性能问题呢?因此,还需要进一步下转分析。

测试验证

( 1 )保持 mem lock 资源限制为默认

  

( 2 )重启操作系统 , 让集群将实例带起来(大页生效)

 

1
2
3
4
5
6
7
8
9
10
11
12
查看数据库日志(此时数据库正常使用大页)
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = UNLIMITED
  
Total Shared Global Region in Large Pages = 2210 MB (100%)
  
Large Pages used by this instance: 1105 (2210 MB)
Large Pages unused system wide = 3 (6144 KB)
Large Pages configured system wide = 1108 (2216 MB)
Large Page size = 2048 KB
********************************************************************

 

( 3 )使用集群管理命令启动数据库 (大页生效)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
srvctl start database -d ora
  
查看数据库日志(此时数据库正常使用大页)
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = UNLIMITED
  
Total Shared Global Region in Large Pages = 2210 MB (100%)
  
Large Pages used by this instance: 1105 (2210 MB)
Large Pages unused system wide = 3 (6144 KB)
Large Pages configured system wide = 1108 (2216 MB)
Large Page size = 2048 KB
*******************************************************************

*

( 4 )使用 startup 命令分别启动数据库(大页未生效)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
startup
  
查看数据库日志(此时数据库无法使用大页)
  
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = 64 KB
  
Total Shared Global Region in Large Pages = 0 KB (0%)
  
Large Pages used by this instance: 0 (0 KB)
Large Pages unused system wide = 1108 (2216 MB)
Large Pages configured system wide = 1108 (2216 MB)
Large Page size = 2048 KB
  
RECOMMENDATION:
  Total System Global Area size is 2210 MB. For optimal performance,
  prior to the next instance restart:
  1. Large pages are automatically locked into physical memory.
 Increase the per process memlock (soft) limit to at least 2216 MB to lock
 100% System Global Area's large pages into physical memory
********************************************************************

 

  因此,可以得出结论,在未设置 memlock 资源限制的情况下,不同的启动方式会影响大页的生效,具体参考如下:

1.  集群将实例带起来,数据库能正常使用大页

2.  用集群管理命令启动数据库,数据库能正常使用大页  

3.  startup 会根据实际的用户环境生效

后续在跟用户的交流中确认,实际操作步骤就是为对两节点依次使用 startup 方式进行启动,此时在未正常配置 memlock 限制下,大页无法被正常使用,导致系统 O OM 的出现。

 

与[转帖]Oracle大页未正常使用导致大量SWAP案例分析相似的内容:

[转帖]Oracle大页未正常使用导致大量SWAP案例分析

http://blog.itpub.net/30310891/viewspace-2927363/稀奇古怪的.. 故障背景 某次,用户反馈一套已经正常运行一段时间的 Oracle 11.2.0.4 RAC 数据库( 128G 物理内存),在调整 process 阈值之后, R AC 集群中其中一个节

[转帖]内存优化(开启内存大页vm.nr_hugepages)

大页内存(hugepages) 为优化内存管理引入了hugepages 可以自定义设置、将原来标准内存也4k设置为更大。 hugepages 优点: 使得Oracle SGA 不可交换; 减轻 TLB 的压力; 减少页表的开销; 减少页表查询的开销; 提升内存访问的整体性能; oracle建议设置h

[转帖]Oracle、MySQL、PG是如何处理数据库“半页写”的问题的?

数据库“断页”是个很有意思的话题,目前任何数据库应该都绕不过去。我们知道数据库的块大小一般是8k、16k、32k,而操作系统块大小是4k,那么在数据库刷内存中的数据页到磁盘上的时候,就有可能中途遭遇类似操作系统异常断电而导致数据页部分写的情况,进而造成数据块损坏,数据块损坏对于某些数据库是致命的,可

[转帖]oracle 11.2.0.4 rac集群等待事件enq: TM - contention

近期,一金融客户oracle 11.2.0.4 rac集群delete不当导致等待事件enq: TM - contention严重引起大范围会话堆积,记录的相关分析工作如下。 1、登录集群任意节点,查看集群全局等待事件 SQL> select event,count(*) from gv$sessi

[转帖]oracle 11g 分区表创建(自动按年、月、日分区)

https://www.cnblogs.com/yuxiaole/p/9809294.html 前言:工作中有一张表一年会增长100多万的数据,量虽然不大,可是表字段多,所以一年下来也会达到 1G,而且只增不改,故考虑使用分区表来提高查询性能,提高维护性。 oracle 11g 支持自动分区,不过得

[转帖]Oracle创建用户和表空间

一、概述 1.数据库实际管理中,不同业务系统需要使用’不同的用户'进行管理维护和使用,这样做把业务数据和系统数据独立分开管理,利于数据库系统管理; 2.在数据库中创建业务系统用户时候,建议为用户创建指定的用户表空间,否则全部默认为user表空间存储,使得user表空间容易过大,不易管理、查询。 二、

[转帖]各大IT公司的名字由来(持续整理中ing...)

公司排名不分先后,先从IOE说起吧~ IBM InternationalBusiness Machines Corporation,国际商业机器股份有限公司。有“蓝色巨人”(Big Blue)的昵称 ,据称汤姆·沃森为了要高出前雇主(全国现金出纳机公司)一筹,而定了这个名字。 Oracle Larr

[转帖]一文看懂mysql数据库事务隔离级别

概述 我们都知道除了MySQL默认采用RR隔离级别之外,其它几大数据库都是采用RC隔离级别。那为啥mysql要这样设置呢?其实是MySQL为了规避一个数据复制场景中的缺陷,而选择 Repeatable Read 作为默认隔离级别。不过不同数据库实现方式还是不太一样。 Oracle仅仅实现了RC 和

[转帖]Oracle Linux 9 - Oracle 提供支持 RHEL 兼容发行版

https://sysin.org/blog/oracle-linux-9/ Oracle Linux 是一个开放、全面的操作环境,提供虚拟化、管理、云原生计算工具和操作系统,通过一个统一的支持解决方案满足您的业务需求。Oracle Linux 与 Red Hat Enterprise Linux

[转帖]Oracle数据库的两种授权收费方式详解

https://www.jb51.net/article/265823.htm 现在Oracle有两种授权收费方式,按CPU(Process)数和按用户数(Named User Plus),前一种方式一般用于用户数不确定或者用户数量很大的情况,典型的如互联网环境,这篇文章主要介绍了Oracle数据库