【问题标题】:Django/Postgresql memory leak and persistent connectionsDjango/Postgresql 内存泄漏和持久连接
【发布时间】:2014-03-20 12:08:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django postgresql memory-leaks


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2011-10-23
      相关资源
      最近更新 更多