暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

OGG extract进程占据大量虚拟内存导致服务器内存异常增长分析

3704

现象

oracle服务器一节点内存,一个月来持续升高,近一月上涨10%左右。

image.png

问题分析

OS内存使用情况

image.png

使用内存最大的10个进程如下,PID为279417占用最大的内存。
image.png

查询279417,发现是ogg相关进程。
image.png

发现ogg的extract进程占用了大量的虚拟内存。
image.png

extract进程的内存占用情况,占据了操作系统大量的内存。
image.png

VSZ是虚拟内存大小,这是linux给进程的内存大小,但是这并不一定意味着这个进程使用了所有的内存。例如,许多应用程序具有执行某些任务的功能,但可能在需要之前不会将它们加载到内存中。Linux利用了请求分页,它只在应用程序尝试使用页面时才将页面加载到内存中。VSZ大小已经考虑了所有这些页面,但这并不意味着它们已经加载到物理内存中。因此,VSZ大小通常不是一个进程正在使用多少内存的精确度量,而是一个进程在将其所有函数和库装入物理内存时可以使用的最大内存量和指示。

RSS是驻留集大小(Resident Set Size),这是进程当前加载其所有页面的内存大小。乍一看,RSS数字似乎是系统进程使用的实际物理内存量。然而,每个进程的共享库也会被计算进去,这使得报告的物理内存使用量不那么准确。

总的来说:
EXTRACT启动时,会分配CACHESIZE大小的VM来缓存事务数据能够用来缓存事务数据的VM的大小,为PROCESS VM AVAIL FROM OS。当VM使用达到CACHESIZEMAX时,考虑将数据数据大于CACHEPAGEOUTSIZE的事务pageout入磁盘。
Oracle官方文档中描述CACHEMGR参数主要用于控制存放未提交事务的虚拟内存(virtual memory,指的swap/paging space空间)和临时磁盘空间。所有的数据存放在叫做global cache的虚拟内存池中,当数据库接收到commit/rollback之后这些cache里面的内容才会写到trail文件中。

通过CACHEMGR可以设置用来cache没有提交的数据的虚拟内存大小和临时空间。
Ogg未配置CACHEMGR相关参数。

CACHEMGR参数配置:
默认情况下OGG的temp disk在./dirtmp下面,如果磁盘空间不足或者性能影响时我们可以考虑使用CACHEMGR参数进行调整。
语法及各个选项的意义如下:
CACHEMGR {
[, CACHESIZE ]
[, CACHEDIRECTORY [] [, …]]
[, CACHEPAGEOUTSIZE ]
}

选项 含义
CACHESIZE EXTRACT进程可用的用于缓存未提交的事务数据的初始化分配的VM容量。通过CACHESIZE选项指定
CACHEDIRECTORY 指定swap出来的文件的目录
CACHEPAGEOUTSIZE 事务数据将被考虑来交换到硬盘的阀值。通过CACHEPAGEOUTSIZE选项控制
CACHESIZEMAX 指定进行CACHEPAGEOUTSIZE时的阀值,超过该值进行长事务的PAGEOUT,低于该值停止PAGEOUT

结论与建议

通过设置CACHEMGR CACHESIZE 可以来控制OGG进程的内存使用

最后修改时间:2022-03-19 09:24:21
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
2人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论