我发现一些postgres进程的内存利用率随着时间的推移增长了25%。 postgres连接由django建立,而django主要只是创建新记录。
我想了解为什么postgres进程使用了这么多内存,尽管我尝试通过在我的django设置文件中将CONN_MAX_AGE设置为600来解决它。 postgres进程似乎存在了好几天,所以我不相信CONN_MAX_AGE正在做任何事情。
我有DEBUG = False,正在运行Django 1.6.2。关于如何进行调试的任何想法?还有其他人看过类似的问题吗?
答案 0 :(得分:1)
PostgreSQL可能实际上并没有使用更多的内存,它只是你的进程记帐报告内存使用的方式。
见
如果您的整体系统RAM使用率上升,则可能会遇到实际问题,当使用pg_terminate_backend
终止PostgreSQL后端时,可能会再次显着下降。但最有可能的是,您所看到的只是每个后端触及的更多共享内存页面。
由于使用palloc
和内存上下文来进行内部上下文敏感的内存管理,PostgreSQL非常能抵抗内存泄漏。查询中的泄漏并不常见,查询之间持续存在的泄漏非常罕见。我真正看到它们的唯一时间是使用自定义C扩展,或者当人们使用PL / Perl或PL / Python等过程语言并在共享上下文中存储持久性信息时。