GaussDB(DWS) gs_memwatcher.sh 内存监控脚本

举报
fighttingman 发表于 2022/11/21 16:49:36 2022/11/21
【摘要】 gs_memwatcher.sh 内存监控脚本使用说明

脚本作用:监控内存的使用情况,包括实例的内存使用情况,语句级别的内存使用情况,memoryContext级别的内存使用情况

使用场景:报内存错误(memory is temporarily unavailable)之后,没有定位出来是哪个语句或者memoryContext使用的内存较高,或者想知道实例级别的内存使用情况,这个时候就需要部署该监控脚本,等待复现

脚本涉及到的视图:pv_total_memory_detail,pv_session_memory_detail,pg_stat_activity

部署命令:nohup sh gs_memwatcher.sh 5001 > memorywatch.log 2>&1 &

其中5001为实例号,每个dn或者cn都有一个唯一的实例号,都可以进行监控,该实例号可以通过cm_ctl query -Cv进行查询

脚本输出分析:

脚本共查询了四个sql

1)select * from pv_total_memory_detail,监控的是实例级别的内存使用情况,字段的含义详见产品文档

2)select * from pv_session_memory_detail order by totalsize desc limit 100  ,监控的是top 100的memoryContext的内存使用,其中包括了语句的线程id,memoryContext的名字,使用的大小totalsize

3)select split_part(pv_session_memory_detail.sessid,'.',2) pid,pg_size_pretty(sum(totalsize)) total_size,count(*) context_count from pv_session_memory_detail group by pid order by sum(totalsize) desc;

语句级别的内存使用情况,输出包括线程id(pid),语句内存(total_size),memoryContext的数量(context_count)

4)select sessid, contextname, level,parent, pg_size_pretty(totalsize) as total ,pg_size_pretty(freesize) as freesize, pg_size_pretty(usedsize) as usedsize, datname,query_id, query from pv_session_memory_detail a , pg_stat_activity b where split_part(a.sessid,'.',2) = b.pid order by totalsize desc limit 100;

监控的是语句的memoryContext的使用情况,包括memoryContext名字,query信息,threadid,内存使用大小(totalsize)等信息

根据监控脚本监控的sql,可以清楚的知道实例的内存使用情况,语句memoryContext的大小,语句总的内存使用情况等

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。