我每晚在装有 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'
dowser 能否独立于我在 VM 上的测试套件运行?或者我是否必须将上面的代码实现到我的主类中才能运行我的测试来跟踪 python 实例?
最佳答案
Dowser 旨在作为您的应用程序的一部分运行。因此,无论您在何处初始化应用程序,都添加以下行
import dowser
cherrypy.tree.mount(dowser.Root(), '/dowser')
然后你可以浏览到http://localhost:8080/dowser
来查看dowser界面。
请注意,您从文档中引用的调用是为了测试 dowser。正确的调用是 python dowser/__init__.py
。
关于python - 使用 Dowser 在 Python 中跟踪内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044699/