当前位置: 首页 > news >正文

不要盲目迷信多线程

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

转载于:https://www.cnblogs.com/sniperHW/p/4488928.html

相关文章:

  • 磁盘的5种卷,RAID—5的修复
  • IOS学习笔记--Objective-C之KVC、KVO
  • Skype for Business实战演练之八:安装Skype for Business Server 2015
  • android intent 传数据
  • java中HashSet详解(转)
  • 当我完善几年前的一个老项目时,我做了哪些改进
  • 简述ASP.NET MVC原理
  • 代码中的良好习惯从点滴做起
  • linux 下配置文件目录/etc/sysconfig
  • RabbitMQ与Redis做队列比较
  • HttpClient模拟客户端请求实例
  • SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理
  • java.io.IOException: invalid header field
  • 老菜鸟致青春,程序员应该选择java 还是 c#
  • hadoop missing blocks
  • SegmentFault for Android 3.0 发布
  • 时间复杂度分析经典问题——最大子序列和
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【翻译】babel对TC39装饰器草案的实现
  • ECMAScript6(0):ES6简明参考手册
  • exif信息对照
  • JavaScript-Array类型
  • PHP的Ev教程三(Periodic watcher)
  • Python_网络编程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • storm drpc实例
  • ​Python 3 新特性:类型注解
  • #define
  • #Linux(帮助手册)
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (4)事件处理——(7)简单事件(Simple events)
  • (k8s中)docker netty OOM问题记录
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (六)c52学习之旅-独立按键
  • (南京观海微电子)——I3C协议介绍
  • (五)IO流之ByteArrayInput/OutputStream
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)重识new
  • .form文件_一篇文章学会文件上传
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET/C# 使窗口永不获得焦点
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net生成的类,跨工程调用显示注释
  • .NET业务框架的构建
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Bean注解详解
  • [《百万宝贝》观后]To be or not to be?
  • [20171106]配置客户端连接注意.txt
  • [2021 蓝帽杯] One Pointer PHP
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BJDCTF2020]The mystery of ip
  • [C/C++]关于C++11中的std::move和std::forward