4

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

我看过PysizerHeapy——但经过研究,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'

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

4

2 回答 2

3

Dowser 旨在作为应用程序的一部分运行。因此,无论您在哪里初始化应用程序,添加以下行

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

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

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

于 2012-10-24T07:40:48.380 回答
0

使用此博客http://www.aminus.org/blogs/index.php/2008/06/11/tracking-memory-leaks-with-dowser?blog=2设法让 dowser 工作并将端口更改为 8088而不是 8080(机器上没有使用但仍然无法使用!)

于 2012-10-25T09:55:46.417 回答