不要盲目迷信多线程
2015-05-08 21:42
169 查看
最近闲来无事编写了一个异步redis客户端.为了测试其性能逐对redis和ssdb做了一次性能对比测试.
首先介绍下测试环境,i5 4核心 3.6主频的台式机器,服务器客户断均运行在同一台机器上.
测试内容是1000条hashtable数据,分别有两个属性chianfo和skill,每个属性存放100字节左右的字符串.
使用hmget chaid:xx chainfo skills命令向服务器获取数据.
客户端跟服务器建立单一链接,初始时先提交1000个请求,然后每收到一个答复立刻发起一个新的请求.
也就是说类似一个pingpong测试.
redis的qps非常惊人,达到了45W/,而ssdb只有2.5W/s.
这里先简单介绍下ssdb的处理,首先有一个主线程接受户连接,接收客户端过来的请求,解析出操作之后投递
给reader线程,由reader线程处理请求并将响应返回给客户端.在大概分析了各线程的cpu利用率之后,我对
ssdb的源代码做了一点调整,取消reader线程的工作,将请求直接在主线程中处理并返回响应.
修改之后,ssdb的qps达到了5.2W.后来将这个测试的结果跟ssdb的作者交流了一下,得知新版本的ssdb也会做类似调整.
这里不得不赞一下redis的网络处理部分写得非常高效.redis的主线程cpu消耗不过50%.而我的客户端已经到达了80%.
同样的测试,在修改过后的ssdb上,主线程利用率几乎到达100%(5.2w qps),我的客户端在30%左右.
首先介绍下测试环境,i5 4核心 3.6主频的台式机器,服务器客户断均运行在同一台机器上.
测试内容是1000条hashtable数据,分别有两个属性chianfo和skill,每个属性存放100字节左右的字符串.
使用hmget chaid:xx chainfo skills命令向服务器获取数据.
客户端跟服务器建立单一链接,初始时先提交1000个请求,然后每收到一个答复立刻发起一个新的请求.
也就是说类似一个pingpong测试.
redis的qps非常惊人,达到了45W/,而ssdb只有2.5W/s.
这里先简单介绍下ssdb的处理,首先有一个主线程接受户连接,接收客户端过来的请求,解析出操作之后投递
给reader线程,由reader线程处理请求并将响应返回给客户端.在大概分析了各线程的cpu利用率之后,我对
ssdb的源代码做了一点调整,取消reader线程的工作,将请求直接在主线程中处理并返回响应.
修改之后,ssdb的qps达到了5.2W.后来将这个测试的结果跟ssdb的作者交流了一下,得知新版本的ssdb也会做类似调整.
这里不得不赞一下redis的网络处理部分写得非常高效.redis的主线程cpu消耗不过50%.而我的客户端已经到达了80%.
同样的测试,在修改过后的ssdb上,主线程利用率几乎到达100%(5.2w qps),我的客户端在30%左右.
相关文章推荐
- 不要迷信API(单链表的另一种算法)——完成端口通讯服务器(IOCP Socket Server)设计(三)
- 不要盲目增加ip_conntrack_max-理解Linux内核内存
- 蚂蚁金服入股36Kr给我的一点警示:应该相信自己的理性分析,不能盲目迷信权威
- 王晓初:不要迷信LTE
- 经过六块电池试验得出的数据,手机正确充电方法,不要盲目听信别人话语(转)
- 不要盲目羡慕别人,其实你也很优秀
- 千万不要迷信规律:大反例合集
- 蚂蚁金服入股36Kr给我的一点警示:应该相信自己的理性分析,不能盲目迷信权威
- 经过六块电池试验得出的数据,手机正确充电方法,不要盲目听信别人话语(转)
- 不要迷信weblogic
- 不要盲目羡慕别人,你也可以很优秀
- 不盲目选择定购直播系统,不要单看价格——云豹直播分析
- 不要盲目追求新技术,赚钱才是硬道理
- 不要盲目抵制家乐福 要真正支持奥运
- 不要盲目羡慕别人,其实你也很优秀
- 不要盲目选择定时器
- 不要迷信钽电容!
- Servlet是多线程的,最好定义局部变量,不要定义全局变量
- 多线程中线程参数的传递,不要使用局部变量
- 不要盲目羡慕别人,其实你也很优秀