设为首页 收藏本站
查看: 718|回复: 0

[经验分享] Python的memcached客户端测试

[复制链接]

尚未签到

发表于 2017-4-27 11:05:19 | 显示全部楼层 |阅读模式
  主要目的是测试python的三个memcached client的性能
分别是python-memcached   1.43 和cmemcache 0.95(libmemcache-1.4.0.rc2 with patch ) 还有 python-libmemcached 0.13.1(libmemcached 0.26)
服务器信息
CPU:Intel(R) Xeon(R) CPU E5405  @ 2.00GHz
内存:4GB
  Python版本:2.5.3c1
  memcached:1.2.6
  Linux:RedHat AS 4 (32bit) / 2.6.9-78.ELsmp
  
测试数据1,000,000条,key & value均是从1到1000000,写入前均重启memcached
  启动参数:memcached -u memcached -d -m 128 -p 11211
  1,000,000条数据占用内存:60777780 bytes
分别用python的单线程和多线程来测试读写memcached的速度
(一)Python单线程:
①python-memcached
  write:66.30s
  read:74.20s
  
②cmemcache
  write:45.67s
  read:42.16s
  ③python-libmemcached
  write:45.51s
  read:42.91s
  
(二)Python多线程:
  此处我将100万条数据分给4个线程处理

#threadName是0~3,四个整数
l = [ str(i) for i in xrange(self.threadName * 250000, (self.threadName + 1) * 250000)]
  ①python-memcached
  write:
  ___Thread(0) Used: 69.513560056686401
___Thread(1) Used: 74.226099967956543
___Thread(2) Used: 75.597586154937744
___Thread(3) Used: 76.586071014404297
  read:
  ___Thread(2) Used: 79.42231011390686
___Thread(3) Used: 82.816195011138916
___Thread(1) Used: 83.262571096420288
___Thread(0) Used: 83.155163049697876
  ②cmemcache
  write:
___Thread(0) Used: 22.632564783096313
___Thread(1) Used: 22.02928900718689
___Thread(2) Used: 22.382982969284058
___Thread(3) Used: 22.598598957061768
  read:
  ___Thread(1) Used: 20.166458129882812
___Thread(2) Used: 20.590478897094727
___Thread(0) Used: 20.807707786560059
___Thread(3) Used: 20.396129846572876
  ③python-libmemcached
  write:
  ___Thread(1) Used: 11.283051013946533
  ___Thread(2) Used: 11.512333869934082
  ___Thread(0) Used: 10.283640146255493
___Thread(3) Used: 21.939767837524414
  read:
  ___Thread(3) Used: 9.5806050300598145
___Thread(0) Used: 9.6075308322906494
___Thread(2) Used: 9.7577638626098633
___Thread(1) Used: 10.605507850646973
  总结:
  python-memcached奇怪的是,在多线程的时候,效率比它单线程要差很多,cmemcache与python-libmemcached单线程的时候几乎没有差别,但在多线程的时候,使用python-libmemcached编写的测试脚本中的四个线程不是同时执行,造成多线程测试脚本执行时间与单线程脚本的执行时间差不多,不知道为什么。使用cmemcache与python-memcached编写的脚本中的四个线程几乎同时开始,并且同时结束,脚本执行时间就是速度最慢的线程的时间。


  • cmemcache是python首选的memcache client,不过它依赖的libmemcache最后更新时间还是2006年,已经很久没更新了。

Django也推荐使用cmemcached,见 http://docs.djangoproject.com/en/dev/topics/cache
 


  • python-libmemcached依靠libmemcached支持更多特性,比如consistent hashing
  • python-memcache明显是速度最慢的,不推荐使用
  附件:
  使用python-libmemcached的测试脚本,包括单线程和多线程版本

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-369913-1-1.html 上篇帖子: 用Boost.Python构建混合系统 下篇帖子: python的神奇方法指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表