升级后,Solaris群集和资源需求减少

德尔福克 工程支持 是非常棒的人。他们继续寻求解决方案,无论需要多长时间和复杂的挑战’面临支持异构环境,硬件配置和客户需求。

此帖子支持我们团队的努力,导致以前受影响的Solaris 11.2集群配置稳定。从Oracle的研究,修补,测试和然后导致Oracle的认证是我们团队的大量企业,我希望这些信息提供社区,但德尔普建议毫无办法。它’在我们的团队使用该系统的逻辑决策后,才能解决问题的方法。

挑战

环境:  Solaris 11.3(使用SRU 17.5)+ Oracle 12.2 RAC + ESX 5.5
情况:
升级到 12.2,环境正在遇到显着的集群不稳定,由于内存升级的新要求,内存饥饿。
检查后,发现许多特征需要比以前的更多内存,并且系统简单地没有’T有支持它的手段。由于我们的环境是具有12.2的Solaris环境,因此我们需要从Oracle请求的文档修补程序 RAC性能和节点驱逐。  环境仍然遇到节点驱逐,等等数据显示我们’d必须在每个节点上三倍,以继续使用之前的环境。我们的人们aren’一个容易放弃的一个,所以进行次要研究,以了解一些内存使用是否可以修剪下来。
我们发现的是,旧的可能再次成为新的东西。我的伙伴和同胞oakie, Marc Fielding. had 博客, (以及与其他帖子的链接,包括其他oakie的信用, 杰里米施奈德)关于他如何’D有限资源在修补12.1.0.2之后回来2015年,这篇文章真的帮助Delphix的工程师越过了环境上的最后一个驼峰,即使在实现补丁以解决内存泄漏后也会过度。你的大部分’重新看到这里,来自那篇文章,专注于它在开发/测试系统中使用(Delphix’s sweet spot.)

研究

内核内存失控
从内核内存使用开始,MDB -K命令可用于以百分比级别检查:
$ echo “::memstat” | mdb -k
Page Summary           Pages                 MB          %Tot
  ————                 —————-             —————-           —-
  Kernel               151528              3183            24%
  Anon                 185037              1623            12%
  ...

我们也可以通过KMSASTAT击败内核内存区域的第二种方式:

::kmsastat

cache                        buf    buf    buf    memory     alloc alloc 
name                        size in use  total    in use   succeed  fail 
------------------------- ------ ------ ------ --------- --------- ----- 
kmem_magazine_1               16   3371   3556     57344      3371     0 
kmem_magazine_3               32  16055  16256    524288     16055     0 
kmem_magazine_7               64  29166  29210   1884160     29166     0 
kmem_magazine_15             128   6711   6741    876544      6711     0 
...

甲骨文 ZFS弧缓存

下一个Oracle ZFS具有非常智能的缓存层,也称为  (自适应替换缓存)。祝福和诅咒,弧消耗可用的内存,但如果它应该释放到其他应用程序的内存’需要。此内存用于补充任何慢磁盘I / O.检查我们的环境时,将超额分配到弧形。这可能是由于Oracle 12.2的新性,但在群集中,记忆饥饿可能是节点驱逐的常见原因。

我们可以检查以下文件中的arc的大小统计信息:

view /proc/spl/kstat/zfs/arcstats

这假设ZFS安装在/ proc上,因此您的实际arcStats文件可能驻留在不同的路径位置而不是上图。在文件中,查看以下信息:

  • c is the 目标大小 of the ARC in bytes
  • c_max is the 最大尺寸 of the ARC in bytes
  • size is the 目前的规模 of the ARC in bytes

我们的一切都在吃东西,剩下100%的记忆,因为我们’LL在这篇文章的下一部分讨论。

甲骨文 ClusterWare内存

甲骨文 Clusterware是第三个区域,该区域被调查,可用于可以修剪下来的轻浮内存使用情况。那里’s some 清除记录的步骤 调查甲骨文的错误配置和功能问题,可以帮助识别许多这些问题。

所以,升级后和修补后,你可以做些什么来修剪内存用法,以避免内存升级来支持群集升级?

变化

从Weren的功能和安装列表中’T为开发/测试环境提供好处,这些是列出的,为什么:
更新是对的 / etc / system 文件,(需要重新启动并且必须用root执行):
  • 添加 set user_reserve_hint_pct = 80
    • 进行此更改以限制ZFS对电弧高速缓存的内存量。当CRS流程Weren时,客户对客户产生了重大问题’能够分配内存。 80%是在没有节点重新启动的情况下设置的最高百分比,我们都更喜欢不发生。
  • 停止群集健康监视器(CHM)流程。这是12C集群软件中的全新背景过程,收集工作负载数据,在生产环境中显着更有价值,但在开发和测试中?它可以很容易地是随后的CPU和存储器的漏极可以更好地用于更多虚拟数据库。
  •  要执行此操作,将使用以下命令作为root用户:
$ crsctl stop res ora.crf -init
$ crsctl delete res ora.crf -init
  • 删除了跟踪文件分析器收集器(Tfactl)。此后台进程收集多个跟踪文件Oracle生成一个位置。友好的故障排除,但它’S基于Java和具有重要的内存占用空间,并受Java堆问题。
  • 它用以下命令卸载为群集每个节点上的$ ORACLE_HOME所有者:
$ tfactl uninstall
  • 工程停止并禁用群集验证实用程序(CVU)。在以前的版本中,这是一个实用程序,可以手动添加到安装或执行帖子以通过管理员解决问题。这是另一个简单地饮用可以重新分配给开发和测试环境的资源的功能,因此是时候停止和禁用它:
$ srvctl cvu stop
$ srvctl cvu disable

额外的变化

  • 减少ASM实例的内存分配。
    • 12.2中的ASM实例现在使用1GB内存,以前的256MB。那’巨大的变化可以影响依赖于该记忆的其他特征。
    • 在研究时,发现750MB充足,因此如果需要更多的内存重新分配,请考虑将每个节点上的内存降低到750MB。
  • 要执行这组实例级参数更改,请在任何节点上运行以下内容,然后重新启动每个节点,直到群集已循环以将变化效果效果:
$ export ORACLE_HOME=<Grid Home>

$ export ORACLE_SID=<Local ASM SID>

$ sqlplus / as sysasm
alter system set "_asm_allow_small_memory_target"=true scope=spfile;
alter system set memory_target=750m scope=spfile;
alter system set memory_max_target=750m scope=spfile;

大多数DBA的高CPU使用功能可能会令人不安,但是 ’在开发和测试数据库上经验丰富,通常授予较少的资源,以便于生成开始,更改通常可以提高这些环境的稳定性和寿命。

  • 所有数据库中的禁用高分辨率时间刻度,包括ASM DBS,常规DB和网格基础架构管理存储库DB(GIMR,SID为-MGMTDB)。高分辨率刻度是12C的一个新功能,它们似乎导致群集时间保留后的大量CPU使用量像VKTM等。这里’s禁用高分辨率刻度的SQL(必须在每个DB中运行一次):
alter system set "_disable_highres_ticks"=TRUE scope=spfile;
该团队毕竟这些更改后,发现Solaris内核仍然消耗更多的内存,而不是升级之前,但它更加合理:
  • Solaris内核:1GB RAM
  • 电弧缓存:1-2GB之间
  • 甲骨文 ClusterWare:3GB

内存升级

我们确实添加了内存,但不像预期的那样。
在所有调整之后,我们仍然使用超过5GB的内存为这三个功能,因此从8GB到8GB的每个节点 16GB 为了确保足够的资源来支持所有开发和测试需求发布升级。我们希望为任何开发或测试所需的组提供多个虚拟数据库(VDB),因此需要为数据库免费提供超过3GB的数据库!
正如此时,Solaris集群没有更多的内核泛滥,节点驱逐或意外重启,我们需要承认是最重要的结果。它’对用户的中断更难以向用户解释,而不是为什么关闭和卸载未使用的功能到Oracle…. 🙂

dbakevlar.

http://about.me/dbakevlar