使用Dowser跟踪Python中的内存泄漏

时间:2012-10-24 07:35:15

标签: python memory memory-leaks

我每晚都在运行centos操作系统的虚拟机上运行一些测试。最近测试已经占用了机器上的所有可用内存和几乎所有的交换内存,我为VM分配了两倍的内存并且它仍在发生,这导致VM的物理主机死机。这些测试以前运行时没有需要一半的内存,所以我需要使用某种形式的 python内存分析器来调查发生了什么。

我看过 Pysizer Heapy - 但是经过研究 Dowser 似乎是我的那个人因为它需要对代码进行零更改。

远离文档和谷歌搜索,我已经在其自己的班级中获得了此代码:

import cherrypy
import dowser

class MemoryAnalyzer:

def memoryCheck(self):
    cherrypy.config.update({'server.socket_port':8080})
    cherrypy.tree.mount(dowser.Root())
    cherrypy.engine.start()

我希望这会显示文档中显示的Web界面,以跟踪在主机上运行的所有python实例,但这并不起作用。我对文档感到困惑:

   'python dowser __init__.py'. 

可以运行吗?我收到错误:

  /usr/bin/python: can't find '__main__.py' in 'dowser'

可以独立于VM上的测试套件运行dowser吗?或者我是否必须将上面的代码实现到我的主类中以运行我的测试来跟踪python的实例?

2 个答案:

答案 0 :(得分:3)

Dowser旨在作为您的应用程序的一部分运行。因此,无论您在何处初始化应用程序,都要添加行

import dowser
cherrypy.tree.mount(dowser.Root(), '/dowser')

然后,您可以浏览到http://localhost:8080/dowser以查看dowser界面。

请注意,您从文档中引用的调用用于测试dowser。对此的正确调用是python dowser/__init__.py

答案 1 :(得分:0)

使用此博客http://www.aminus.org/blogs/index.php/2008/06/11/tracking-memory-leaks-with-dowser?blog=2进行管理以获取工作并将端口更改为8088而不是8080(在计算机上未使用但仍然无效!)