专栏首页udappGOLDENGATE内存管理以及如何正确设置内存参数

GOLDENGATE内存管理以及如何正确设置内存参数

1、goldengate如何管理内存

首先要说明是goldengate管理的内存不是物理内存,管理只是virtual memroy和swap disk,这个被称为cachesize management(COM).当goldengate进程启动后,COM向操作申请虚拟内存空间(不是真正物理内存,操作系统使用真正使用时候才会分配的机制来提高内存使用效率),只有COM真正需要实际内存空间,操作系统才会分配内存(分配内存空间也不是COM申请全部虚拟地址空间)

其次是swap disk空间,当goldengate进程达到限制大小或者操作系统物理内存不够时候,会进行相应分页操作,将内存数据刷入磁盘空间,这个时候工作效率会降低。

2、查看goldengate进程使用内存情况

通过如下命令查看进程使用内存情况:

1、send extract/replicat group cachemgr cachestats

通过这个命令查看当前进行使用虚拟内存是121.50M,cache size是512M(这个是2的幂次方大小),cache force paging这个是当缓存数据大小超过785m时候,强制进行分页(swap),因为goldengate只复制提交数据,没有提交数据或者长事务必须进行缓存,当系统存在大量大事务或者没有提交事务时,为了保证系统稳定,将没有提交数据缓存到本地磁盘(实现临时存储,goldengate BR参数也会将事务保存在文件系统,主要为了恢复,必须重复读取归档日志--ORACLE extract才有这个功能)

CACHE OBJECT MANAGER statistics

CACHE MANAGER VM USAGE

vm current = 121.50M vm anon queues = 121.50M

vm anon in use = 0 vm file = 0

vm used max = 121.50M ==> CACHE BALANCED ------>使用虚拟内存

CACHE CONFIGURATION

cache size = 512M cache force paging = 785M --

buffer min = 64K buffer max (soft) = 4M

pageout eligible size = 4M

2、linux平台可以如下命令查看:

ps -C extract -O rss |awk '{print $2/1024, "MB", $8}'

3、goldengate内存消耗造成问题

根据oracle goldengate官方文档,oracle是不建议自己调整

CACHEMGR CACHESIZE,因为goldengate会根据操作系统情况自动进行优化与调整相应参数(这个基于现在主机内存内存都很大情况下),看到朋友说:

a:golengate 进程把操作系统所有内存和虚拟内存全部消耗完了导致系统性能问题甚至宕机.

b:自己调整goldengate cachemgr cachesize后系统变慢甚至系统hang,关闭goldengate进行后系统恢复.

4、如何对goldengate内存进行管理与优化

首先我们为什么需要对goldengate内存进行优化和管理,那边我们需要搞清楚,goldengate占用内存取决那些因素:

a:goldengate缓存没有提交数据大小--这个与应用设计、OLTP还是OLAP、事务大小、数据写入方式等--这个不好控制

b:goldengate 实例的进程数,一个进程需要25-55M物理内存大小--这个也可以进行控制,一般不会太多

c:系统可用内存以及swap空间---这个是硬限制

优化建议:

对于系统有富裕内存,可以进行相应cachemgr设置,对于系统内存不足,不建议设置cachemgr,因为如果本身内存不足,设置cachesize很大反而会导致系统性能问题,因为系统本身没有足够内存,设置反而破坏goldengate自动优化机制.

下面是一个系统内存使用率比较高系统,设置cachemgr参数与没有设置cachemgr时候对比情况,配置cachemgr cachesize后业务高峰期系统很卡,注释参数后系统恢复正常

系统自动优化是512M,自己配置是4G.业务高峰期的话,ogg把处理大量没有提交事务,导致消耗系统内存,数据库处理事务因为内存问题导致业务变慢.

--设置cachemgr cachesize 3g

CACHE CONFIGURATION

cache size = 4G cache force paging = 6.91G

buffer min = 64K buffer max (soft) = 8M

pageout eligible size = 8M

--采用默认值的输出结果:

CACHE CONFIGURATION

cache size = 512M cache force paging = 785M

buffer min = 64K buffer max (soft) = 4M

pageout eligible size = 4M

[注意点】

goldengate使用内存后,很难被释放给操作,在有些情况可以被操作回收,所有看到ogg内存是1G升级到5G,此时数据库没有事务处理,ogg使用内存也不会被释放给操作系统。

5、如何通过cachemgr cachestats来设置合理cachesize

主要包括分配虚拟内存,cache size,请求分配内存区域,缓存事务大小分配区域,主要通过查看CACHE Transaction Stats,CACHE File Caching 来查看数据被刷入磁盘情况来判断实际事务情况以及使用swap情况

RUNTIME STATS FOR SUPERPOOL

CACHE Transaction Stats

trans active = 0 max concurrent = 18

non-zero total = 4.02M trans total = 6.53M

CACHE File Caching

filecache rqsts = 0 bytes to disk = 0

file retrieves = 0 objs filecached = 0

queue entries = 0 queue processed = 0

queue entry not needed = 0 queue not signaled = 0

fc requesting obj = 0

CACHE MANAGEMENT

buffer links = 52.77K anon gets = 0

forced unmaps = 0 cnnbl try = 0

cached out = 0

本文分享自微信公众号 - udapp(gh_945028ad4abb),作者:小徐

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mongodb执行计划

    前面2篇文章讲到分页性能优化相关知识点,但并没有介绍如何找出系统中TOP SQL、对于如何清理SQL缓存执行计划(比如走错执行计划,存在数据倾斜的情况)、Mo...

    徐靖
  • Mongodb多键索引之数组

    最近有项目需求用到多键索引,Mongodb中字段值支持多键索引主要包括嵌套文档、数组以及数组嵌套文档.例如联系包括手机、固定电话、邮箱、微信、QQ等,对于字段值...

    徐靖
  • ORACLE 12C DG BROKER配置切换以及FAST FAILOVER介绍

    通常情况下习惯使用sqlplus命令对数据库primary以及dataguard进行switchover、failover.虽然oracle很早...

    徐靖
  • 分分钟get腾讯云TStack技术汇总!

    6月6日,芒种,仲夏初启。 2019年业已过半,本文带你快速回顾近半年的技术文章 此文甚多干货,值得收藏。 Neutron的IPAM还可以这么玩! 3月1...

    腾讯云TStack
  • SAS or R:谁更适合你?(二)

    本期开始大猫将直奔主题,从“语法灵活性(Syntax)”、“性能与并行计算(Performance & Parallel Computation)”、“商业/社...

    用户7652506
  • Docker-Compose搭建mysql、redis、zookeeper、rabbitmq、consul、elasticsearch环境

    创建并启动容器 如果文件名就叫做docker-compose.yml则可以不适用-f选项指定文件路劲,up选项启动容器,-d选项以守护模式运行

    gang_luo
  • IndieVolume实现程序音频独立调节功能

    GreenBrowser没有IEPLUS和THEWORLD的浏览器静音功能(不是停止页面内控件播放声音,而是截获音频:播放器仍旧继续,但是浏览器不发出声音),作...

    贰师兄TEN
  • 图像处理之漫水填充算法(flood fill algorithm)

    导语 介绍了漫水填充算法(flood fill algorithm)的基本思想,实现方式和应用场景,OpenCV中floodFill函数的使用方法。 ...

    MelonTeam
  • 调整进程的最大linux文件描述符

    1.介绍 ---- ulimit 命令提供了针对 shell和或由该 shell 启动的进程占用资源的控制。  持久化修改生效是在/etc/security/l...

    昊楠Hacking
  • C语言入门系列之9.预处理

    在之前,已多次使用过以#号开头的预处理命令,如包含命令#include <stdio.h>、宏定义命令#define PI 3.1415926535等。 ...

    cutercorley

扫码关注云+社区

领取腾讯云代金券