请问如何解决 python-memcache 内存泄漏

2011-09-26 13:05:43 +08:00
 fcicq
应用是 webapp2 + gevent 做的. 应用有需要用 gevent 进行的异步操作, 所以无法使用 libmemcached 的 bindings. 使用 Dozer 已经确认泄漏出现在 memcache.Client. python-memcache 版本 1.40-2ubuntu1, python 版本 2.6.4~rc2-0ubuntu1.

大致目前的使用方式:
def get_mc():
mc = memcache.Client([MEMCACHE_SERVER], debug=0)
return mc
... (略)
def mc_free(mc):
mc.disconnect_all()

然后
mc = get_mc()
...
mc_free(mc)
del mc

但不幸的是该 object 仍然没有被回收.

全局的 memcache.Client 实例, 在同时被使用(gevent)时会引发竞态(也不适合加锁), 故提此问题.
6329 次点击
所在节点    Python
5 条回复
fcicq
2011-09-26 13:24:41 +08:00
solved, by apt-get remove python-memcache and easy-install python-memcached
qichangxing
2011-09-27 10:18:58 +08:00
看下这个是否有助参考: http://simple-is-better.com/news/350
fcicq
2011-09-27 13:25:20 +08:00
已经解决了... 不要再回了.
yangjuven
2011-11-23 11:12:39 +08:00
@fcicq 楼主,问题虽然已经通过"easy_install python-memcached",但是memory leak在哪个点?为什么这个方法能解决?并没有说清哦。望指明。最近也碰到了这个问题。
fcicq
2011-11-24 16:50:57 +08:00
版本更新

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

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

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

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

© 2021 V2EX