<返回更多

从LINUX 系统层次看PostgreSQL 内存消耗

2020-07-29    
加入收藏

对于POSTGRESQL 到底使用了多少内存,大部分的使用方法都是进入到POSTGRESQL 中进行查看,今天我们来分享从PostgreSQL 外部来查看内存的方式方法。

本次主要使用的命令是ps 命令

从LINUX 系统层次看PostgreSQL 内存消耗

 

通过ps 命令中的附带参数,对当前PG运行的线程进行一个展示,其中每个线程使用的CPU 的Memory 的比率也会清晰地展示在屏幕中。

从LINUX 系统层次看PostgreSQL 内存消耗

 

ps -u postgres o pid,rss:8,cmd | awk 'NR>1 {A+=$2} {print} END{print "Total RSS: " A}'

通过PS 和AWK 的组合,可以对POSTGRESQL 的当前得到与postgresql有关的进程使用内存数,以及总体使用的内存数据量。

首先我们要确认RSS 到底是什么

RSS是当前映射到进程中的页面总数。它分为两部分, 第一部分是Shared_Clean + Shared_Dirty中RSS的共享部分,Private_Clean + Private_Dirty是RSS中对这个进程的独享。

linux 中proc目录中有所有相关的进程的信息,PSS 通过下面的预计获得,所以RSS - PSS 等于的就是进程独享的内存

ps -u postgres o pid= | sed 's#.*#/proc/&/smaps#'|sed s/[[:space:]]//g | xargs sudo grep ^Pss: | awk '{A+=$2} END{print A}'

从LINUX 系统层次看PostgreSQL 内存消耗

 

实际上知道进程号后,再配合上面的语句稍加改造就可以获得,你想知道的线程使用的PSS 是多少, 通过下图两个值的比较, 就可以知道 postgres 主进程中 16848 - 10737 这个进程与其他进程共享的内存是多少.

从LINUX 系统层次看PostgreSQL 内存消耗

 

当然有没有更简单的方式来获取这些信息, 目前直接可以通过命令来显示RSS PSS USS 信息的 smem工具可以满足相关的需求,另外还可以显示哪些进程已经开始使用了 SWAP

从LINUX 系统层次看PostgreSQL 内存消耗

 

在这之后,你可以告诉他共享内存使用了多少, 进程独占使用了多少, 有哪些进程已经开始使用SWAP,这对解决某些关于内存方面的问题很有帮助,尤其是对于某些访问进程的内存使用分析。

以上内容由东方瑞通资深讲师 Austin原创,Austin老师13年专业DBA经验,曾任互联网金融公司Senior DBA、500强制药企业Senior DBA,精通MySQL、PostgreSQL、Mongo DB、SQLServer

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>