“检查指针进程”在 Postgres 中消耗更多内存。如何控制它?
Posted
技术标签:
【中文标题】“检查指针进程”在 Postgres 中消耗更多内存。如何控制它?【英文标题】:"checkpointer process" is consuming more memory in Postgres. How to control it? 【发布时间】:2018-08-22 13:47:23 【问题描述】:我们有一个数据库集群“db1_data”。在这个集群下,我们有两个数据库。一个是 db1,另一个是 qovr。我惊讶地看到“检查点进程”正在消耗 8.73GB 的内存(RSS 值为 9158892)。为什么“检查指针进程”会消耗这么多内存,以及如何限制“检查指针进程”内存的使用。
【问题讨论】:
您可能只看到来自shared_buffers
的共享内存。不用担心。此内存会为许多 PostgreSQL 进程显示,尽管它只存在一次。
如果你看到日志,你会发现有几个 postgres 处理器/连接消耗超过 1gb 的内存。
有趣。您如何在日志中看到这一点?
ps
将包括父进程分配的共享内存。由于父 postgres 进程为 shared_buffers
分配了共享内存,因此预计 ps 列出的每个子进程都会给出它使用那么多内存的表达式。
【参考方案1】:
我也有类似的情况。我有两个进程分别占用 16GB 的 RAM(postgres:检查点进程和 postgres:写入进程)。我查看了命令的输出
pmap -p PID_OF_PROCESS
发现最大的内存被“删除”的/dev/zero占用了。
为什么会这样?我没有找到释放内存的解决方案。这是一个测试环境,所以我刚刚重启了PG。
【讨论】:
以上是关于“检查指针进程”在 Postgres 中消耗更多内存。如何控制它?的主要内容,如果未能解决你的问题,请参考以下文章
强调 spring boot 服务时消耗的 GCP Postgres 连接(使用 SQL Cloud 代理)
连接postgres特别消耗cpu资源而引发的PostgreSQL性能优化考虑
连接postgres特别消耗cpu资源而引发的PostgreSQL性能优化考虑