我每晚都在使用 centos 操作系统的 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/