ZooKeeper的一个性能测试

11 篇文章 0 订阅

台ZooKeeper服务器。8核64位 jdk1.6;log和snapshot放在不同磁盘

场景一

同一个目录下,先create EPHEMERAL node,再delete;create和delete各计一次更新。没有订阅。
一个进程开多个连接,每个连接绑定一个线程,在多个path下做上述操作;不同的连接操作的path不同

测试结果数据汇总如下:

dataSize(字节) totalReq recentTPS avgTPS recentRspTim   avgRspTim failTotal
  4096   2037   1585      
  1024   7677   280      
  255   14723   82      
  说明 总请求数 实时TPS   实时响应时间(ms)      

场景二

一个进程开多个连接,每连接一个线程,每个连接在多个path下做下述操作;不同的连接操作的path不同
每个path有3个订阅者连接,一个修改者连接。先全部订阅好。然后每个修改者在自己的每个path下创建一个EPHEMERAL node,不删除;创建前记录时间,订阅者收到event后记录时间(eventStat);重新get到数据后再记录时间(dataStat)。共1000个pub连接,3000个sub连接,20W条数据。

结果汇总:getAfterNotify=false(只收事件,受到通知后不去读取数据);五台4核client机器
  dataSize(字节) totalReq recentTPS avgTPS recentRspTim avgRspTim failTotal
  4096   8000+   520左右    
  2048   1W+   270左右    
  1024   1W+   256左右    
  255   1W+   256左右    
  说明 总请求数 实时TPS   实时响应时间(ms)    

收到通知后再去读取数据,五台4核client机器

  dataSize(字节) totalReq recentTPS avgTPS recentRspTim avgRspTim failTotal
eventStat 4096   8000+   1000左右    
eventStat 4096   3200   2200-2600    
dataStat 4096   3200   4000-4300    
eventStat 1024   9500   400-900    
dataStat 1024   9500   700-1100    
eventStat 256   8500   200-1000    
dataStat 256   8500   300-1400    
  说明 总请求数 实时TPS   实时响应时间(ms)    

收到通知后再去读取数据,1台8核client机器

  dataSize(字节) totalReq recentTPS avgTPS recentRspTim avgRspTim failTotal
eventStat 4096   5771   9604    
eventStat 4096   5558   10633    
dataStat 4096   5558   10743    
eventStat 1024   6000   9400    
dataStat 1024   6000   10000    
eventStat 256   6374   10050    
dataStat 256   6374   10138    
  说明 总请求数 实时TPS   实时响应时间(ms)    

场景三

一个进程开多个连接,每连接一个线程,每个连接在多个path下做下述操作;不同的连接操作的path不同
每个path有一个修改者连接,没有订阅者。每个修改者在自己的每个path下设置数据。

结果汇总:getAfterNotify=false(只收事件,受到通知后不去读取数据);五台4核client机器
dataSize(字节) totalReq recentTPS avgTPS recentRspTim   avgRspTim failTotal
  4096   2037   1585      
  1024   7677   280      
  255   14723   82      
  说明 总请求数 实时TPS   实时响应时间(ms)      

总结
由于一致性协议带来的额外网络交互,消息开销,以及本地log的IO开销,再加上ZK本身每1000条批量处理1次的优化策略,写入的平均响应时间总会在50-60ms之上。但是整体的TPS还是可观的。单个写入数据的体积越大,响应时间越长,TPS越低,这也是普遍规律了。压测过程中log文件对磁盘的消耗很大。实际运行中应该使用自动脚本定时删除历史log和snapshot文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值