有没有什么办法可以知道 Python web 是否有内存泄漏

2017-06-26 11:17:43 +08:00
 chenqh

现在情况是这样的,今天一起来发现 aws 上 supervisor tornado 进程的内存占用好高,以前一般是一个进程 60M 左右 , 今天基本都是 400M 以上,甚至有 900M 的,有没有办法知道怎么内存泄漏了吗

3028 次点击
所在节点    Python
5 条回复
Morriaty
2017-06-26 11:22:27 +08:00
python 有 gc 模块
JhZ7z587cYROBgVQ
2017-06-26 11:49:49 +08:00
查看一下有没有全局变量没删除吧?
chenqh
2017-06-26 12:07:42 +08:00
@jason0916 我都怀疑是 AWS 的问题了
kinghui
2017-06-26 12:31:20 +08:00
检查一下是否存在相互引用导致 Handler 没有被回收. 因为 Tornado 会为每一个请求构建新的 Handler 处理请求. 如果当前 Handler 的 self 传递给其他对象保存, 同时又把该对应绑定到了 self 上就会产生内存泄露.

PS. 如果没有引起 OOM 就没啥大问题.
h280254082
2017-06-26 13:02:37 +08:00
有一个叫 meliae 的库你可以看一眼

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/371090

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX