GaussDB(DWS) gs_memwatcher.sh 内存监控脚本
【摘要】 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)