python - Django/Postgresql 内存泄漏和持久连接

标签 python django postgresql memory-leaks

我看到一些 postgres 进程的内存利用率随着时间的推移增长了 25%。 postgres 连接由 django 建立,而 django 主要只是创建新记录。

我想了解为什么 postgres 进程使用了​​这么多内存,尽管我确实尝试通过在我的 django 设置文件中将 CONN_MAX_AGE 设置为 600 来解决这个问题。 postgres 进程似乎已经存在了好几天,所以我不相信 CONN_MAX_AGE 正在做任何事情。

我有 DEBUG = False 并且正在运行 Django 1.6.2。关于如何调试这个的任何想法?有没有其他人看到过类似的问题?

最佳答案

PostgreSQL 可能实际上并没有使用更多的内存,这只是您的进程记帐报告内存使用情况的方式。

如果您的整体系统 RAM 使用率上升,并且当您使用 pg_terminate_backend 终止 PostgreSQL 后端时再次显着下降,您可能会遇到真正的问题。不过,您所看到的很可能只是更多的共享内存页面被每个后端触及。

PostgreSQL 由于使用 palloc 和内存上下文来进行分层上下文相关的内存管理,因此它对内存泄漏具有很强的抵抗力。查询中的泄漏并不常见,在查询之间持续存在的泄漏非常罕见。我真正看到它们的唯一一次是在使用自定义 C 扩展时,或者当人们使用 PL/Perl 或 PL/Python 等过程语言并在共享上下文中存储持久信息时。

关于python - Django/Postgresql 内存泄漏和持久连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532553/

相关文章:

python - render_to_response 时 Django View ValueError

python - 调用 Python 对象时,模型中的 Django FileField 超出了最大递归深度

python - 无法将自定义字段添加到 django-registration

python - 使用 postgresql、python 和存储过程的日期时间

sql - 在postgres中添加没有密码的用户

python - 错误 : command 'gcc' failed with exit status 1 on centos 6. 5

Python - 无法让简单的 while 循环工作(学生项目)

python - 按两个字段对 Python 列表进行排序

python - 如何使用Python模块 "attr.asdict(MyObject)"实现 'attrs'的反转

java - 有没有办法在 liquibase 中执行变更集之前创建 postgres 数据库