阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何分析PG数据库内存告警

35次阅读
没有评论

共计 1426 个字符,预计需要花费 4 分钟才能阅读完成。

导读 PG 数据库遇到内存问题要立即进行分析的场景并不多,因为大多数 PG 数据库的内存使用率过高的报警并不意味着内存使用情况异常,内存真的不够用了。因为 PG 数据库是使用 DOUBLE BUFFERING 机制的,大量的内存很可能被 BUFFER/CACHE 占用了。

如何分析 PG 数据库内存告警

​前几天写了 CPU 分析与 IO 分析的文章,本来昨天想再凑一个内存分析的,不过因为昨天一大早就去拜访客户了,所以今天补上。今天早上本来和优诺的傲寒约好了去他那里取取经,听听他对智能化运维的看法,不过因为一些其他安排临时取消了,十分遗憾。

PG 数据库遇到内存问题要立即进行分析的场景并不多,因为大多数 PG 数据库的内存使用率过高的报警并不意味着内存使用情况异常,内存真的不够用了。因为 PG 数据库是使用 DOUBLE BUFFERING 机制的,大量的内存很可能被 BUFFER/CACHE 占用了。

如何分析 PG 数据库内存告警

上面的 free 命令可以看到 32G 内存使用了 15G 多,但是 free 只剩下 599M 了,BUFF/CACHE 占了 15G 多。不过如果我们看 available,有 9G 多,当前这个 PG 服务器的内存是充足的。从这个例子上看到,我们看 fee 命令的结果的时候,不应该看 free,看 available 更为准确。

如何分析 PG 数据库内存告警

/proc/meminfo 可以更详细的看到 OS 的内存情况,我们可以关注红框里的几个数字。Dirty 是 FILE CACHE 中尚未写入磁盘的脏数据,是无法快速丢弃的内存,如果这个指标持续较高,那么说明 OS 的回写机制或者磁盘存在性能问题,是需要关注的。PageTalbes 如果比较大,对于 PG 数据库来说,很可能是配置了较大的 shared_buffers, 但是没有启用 HugePages,这样除了会影响 PG 数据库访问内存的性能外,还会占据大量的不必要的内存。AnonHugePages 指标大于零说明没有关闭透明大页,而且已经使用了透明大页,对于 PG、Oracle 等数据库来说,透明大页的缺点大于优点,会引起内存碎片,建议关闭。另外需要关注的是 SWAP 的使用率,如果 FREE 内存很大,但是 SWAP 使用率超过 20%,很可能是 OS 的 NUMA 内存方面的配置存在问题,没有全局分配内存。

遇到 PG 数据库的空闲内存不足的问题,首先通过这些机制分析 OS 内存是否真的存在风险,如果没有发现明显的风险,暂时就不需要做进一步的分析了。如果真的存在风险,我们还可以继续在 OS 层面查找。

如何分析 PG 数据库内存告警

ps aux –sort -rss |head -20 命令可以查出 rss 使用最高的 20 个进程。然后找出存在问题的进程,用 smem 做进一步分析。

如何分析 PG 数据库内存告警

如果找到了存在问题的进程,可以用 smem 进一步去做分析。其中 USS 是进程私有内存,PSS 是私有内存 + 共享内存的总和

如何分析 PG 数据库内存告警

如果在 OS 层面找到了存在问题的进程,那么可以使用上面的语句去查找其 PG 会话的信息,进一步进行定位。一般情况下,PG 会话占用较多的内存可能是做 VACUUM、ANALYZE、排序,表连接、内存临时表等操作。

如果不存在某个进程使用内存过多,而是大量的进程都占用差不多的内存,那么很可能是数据库并发执行某类 SQL,使用了排序,表连接等临时内存分配。这时候就要去分析数据库的性能是否存在问题,导致了某类 SQL 或者某条 SQL 并发执行量较大。亦或是某条 SQL 的执行计划出现了错误,导致执行时间过长,并发执行量过大,占用了大量物理内存。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1426字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中