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