web.py 内存占用过高

2016-05-06 00:07:36 +08:00
 just1
一个很简单的交互。
本地有一个 json 文件。
客户端发送一个字符串,服务器接受,读入 json ,遍历对象查找哪一项包含这个字符串,并把这一项输出。
今天发现内存占用很高, top 查一下发现这个脚本花了 250mb 内存。。而且查询越多次内存越大。
这是怎么回事呢?该如何解决
web.py python2
3110 次点击
所在节点    Python
6 条回复
YUX
2016-05-06 04:35:41 +08:00
有没有用 flask 也试一下?
just1
2016-05-06 06:51:30 +08:00
@YUX 另一个用 tornado 的很正常。
主要是不想重写代码。。
justou
2016-05-06 07:52:41 +08:00
尝试用 memory_profiler 做一下内存分析呢?
py 采用的对象缓冲池, 垃圾回收不是立即的, 有些时候会被缓存一段时间.
曾经在多线程中下载文件, 发现如果用 with 语句打开文件写入后, 即使出了 with 的作用域, 被写入的 buffer 也不会被立即释放, 结果内存会飙升, 显式的 open, close 就没问题了
mulog
2016-05-06 11:21:24 +08:00
可以用 objgraph 做做 profile 看一下是什么东西占着内存
SlipStupig
2016-05-06 11:54:54 +08:00
方法有几种:
1.分析占用原因, python 采用分代回收,活的越久的对象越不会被回收,所以看一下 profile 状态
2.不用分析,定时 del 对象和强制 GC ,但是这么做会降低性能
just1
2016-05-06 13:20:58 +08:00
@justou
@mulog
@SlipStupig 感谢,等会坐下测试

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

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

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

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

© 2021 V2EX