你好,游客 登录
背景:
阅读新闻

使用python做大数据缓存时遇到的问题

[日期:2014-09-30] 来源:http://blog.xiaorui.cc/  作者: [字体: ]

  被gc和weakref打败了。 这两天在折腾一个数据缓存的rpc服务,简单说就是个内存缓存,计划不打算用redis,memcached。 因为毕竟这些nosql是跨进程的,链接又是tcp链接,肯定是有损耗的。

  但是,我想的太简单了。 再实现的过程中,发现内存总是释放不了,调用gc释放也是相当的有限,这让人十分的抓狂。一开始是以为自己程序的问题,但是随着一遍遍的看代码,发现不对劲,程序里面的那个hash已经基本清零了,但是占用内存还是不少。紧接着我换了套策略,改用lru,lfu的方式,最少使用算法和计数使用算法,看起来很时尚,永远会把旧的数据踢出去,但是…… 踢不干净咋整? lru 还真踢不干净…..

  后来搜了下文档,说是用weakref这样的弱引用可以解决。。。 但是,效果也是不明显。 说实话,十分的郁闷呀。

  这里针对我的程序,我简单写个demo,体现下我的问题。 有兴趣的朋友也可以看看。

  大家会发现,他的内存在gc收回和weakref消除后,还是不能缩减到他一开始的内存使用数。 我这边如果做缓存的话,占用内存大小估计在10G左右,但是如果总是消减不清楚,然后慢慢的,内存中垃圾数据了。

 





收藏 推荐 打印 | 录入: | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款