金字塔debugtoolbar导致内存"泄漏"

时间:2015-10-07 11:30:39

标签: python memory-management memory-leaks pyramid

我的金字塔应用程序有一个长期运行的任务(约30分钟)。当调试工具栏打开时,内存使用量(RSS)开始超过30GB,这导致OOM杀手杀死整个Python进程。

当我关闭调试工具栏时,RSS在任务运行期间始终保持在500MB以下,并且在内存使用方面没有任何问题。

我可以将debugtoolbar关闭以用于开发模式,但是我想因为显而易见的原因而将其保持打开状态。

我正在寻找解决此问题的可能方法,例如:

  1. 在运行任务之前关闭调试工具栏,在完成任务后再打开

  2. 告诉调试工具栏"忘记"每隔一段时间(在运行任务期间)跟踪对象

  3. 任何其他开关,标志,以调试工具栏,以减少其内存使用。

  4. 解决方案?

1 个答案:

答案 0 :(得分:3)

pyramid_debugtoolbar实现为补间,可捕获应用程序的大量状态。所有这些状态都存储在进程内存中,这样当您访问debugtoolbar时,您可以访问该信息。

但是,您可以使用.ini设置关闭应用程序中某些路径的pyramid_debugtoolbar

debugtoolbar.exclude_prefixes

此处记录了这些内容:http://docs.pylonsproject.org/projects/pyramid-debugtoolbar/en/latest/#settings

  

如果PATH_INFO变量以此设置中列出的任何前缀开头,则不会显示调试工具栏,也不会记录任何数据。

如有必要,您可以提供路径列表。