zoukankan      html  css  js  c++  java
  • 不要盲目迷信多线程

    最近闲来无事编写了一个异步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%左右.

  • 相关阅读:
    团队项目第二次冲刺Ⅶ
    团队项目第二次冲刺Ⅷ
    随机生成四则运算式2-NEW+PSP项目计划(补充没有真分数的情况)
    第二周的学习进度情况
    最近关于编程学习的一点小体会
    构建之法阅读笔记02
    随机生成四则运算式2
    本周的学习进度情况
    本学期的阅读计划
    随机生成30道四则运算-NEW
  • 原文地址:https://www.cnblogs.com/sniperHW/p/4488928.html
Copyright © 2011-2022 走看看