今天客户一个即将上线的数据库报告无法连接了,马上登录上去看,系统大量分页,77G内存的机器,交换分区利用率达到70%,还一直在增加马上svmon -U看了下,发现ggs用户用了32GB内存,马上意识到ogg有问题,立马停掉。内存使用一下就降下来了检查extract进程日志,lag延迟了2小时,检查生成的trail,发现最近2个小时生成的trail极多尝试启动extract,发现主机内存马上就上去了。查看了长事务,发现还比较多。立马重新停掉想到OGG的内存限制应该是操作系统用户内存限制马上把ggs用户的内存限制设置为1GB,内存还是继续消耗的很快尝试了128MB限制,尝试设置硬限制,还是没办法,内存吃的飞快。最后查看文档,发现通过cachemgr可以设置用来cache没有提交的数据的虚拟内存大小和临时空间虽然文档不建议设置,由系统自动管理。但是没办法,不设置内存吃的太快了-- 未设置前:CACHEMGR virtual memory values (may have been adjusted) CACHESIZE: 64G CACHEPAGEOUTSIZE (normal): 8M PROCESS VM AVAIL FROM OS (min): 128G CACHESIZEMAX (strict force to disk): 96G -- 设置 CACHEMGR CACHESIZE 4GBCACHEMGR virtual memory values (may have been adjusted)CACHESIZE: 4GCACHEPAGEOUTSIZE (normal): 8MPROCESS VM AVAIL FROM OS (min): 8GCACHESIZEMAX (strict force to disk): 6.91GCACHESIZE:EXTRACT进程可用的用于缓存未提交的事务数据的初始化分配的VM容量。通过CACHESIZE选项指定CACHEPAGEOUTSIZE:事务数据将被考虑来交换到硬盘的阀值。通过CACHEPAGEOUTSIZE选项控制PROCESS VM AVAIL FROM OS:进程可以使用的VM的容量的近似值,默认比系统物理内存+交换分区容量略低,一般为CACHESIZE的两倍CACHESIZEMAX:指定进行CACHEPAGEOUTSIZE时的阀值,超过该值进行长事务的PAGEOUT,低于该值停止PAGEOUT总的来说:EXTRACT启动时,会分配CACHESIZE大小的VM来缓存事务数据能够用来缓存事务数据的VM的大小,为PROCESS VM AVAIL FROM OS当VM使用达到CACHESIZEMAX时,考虑将数据数据大于CACHEPAGEOUTSIZE的事务pageout入磁盘通过设置CACHEMGR CACHESIZE 可以来控制OGG进程的内存使用
通过
send extract extxz, CACHEMGR CACHESTATS,可以看当前进程的vm使用量
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8242091/viewspace-733599/
,如需转载,请注明出处,否则将追究法律责任。