天地维杰网

人如秋鸿来有信,事若春梦了无痕


  • 首页

  • Redis

  • java

  • linux

  • 日常问题

  • Spring和Springboot

  • Mac相关

  • 中间件

  • 架构

  • python

  • 前端

  • jvm

  • c语言

  • web3

  • 归档

  • 关于

  • 搜索
close

时间: 0001-01-01   |   阅读: 20 字 ~1分钟

Redis性能压测实战

源文地址:https://segmentfault.com/a/1190000042301957

既然准备压测Redis,肯定要准备压测机器,Redis服务器,这里还走了不少弯路,大致情况如下:

Redis单点压测

1.三台Jmeter压5-10台Java服务器,压测后面一台单点的Redis 刚开始压测的时候想着模拟常规用户调用场景于是写了一个简单的Java服务,并且集群式部署,它们连接到一台Redis服务器,见下图:

当然压之前也查看了Redis官网,以及用Redis-bechmark试过Redis极限性能到10万的GPS左右,但是用这样的方式压测根本压不到瓶颈,哪怕把Java服务器与Redis的连接数调大。不停地加Java服务机器,却怎么压不出Redis的极限,此时可以感受到Redis性能的强悍。虽然有官方数据,但是经过这么多机器的压测仍然达不到它的瓶颈,大概知道是压测方式出问题了。

单Java服务器压单台Redis

换另一个方案,Java服务器,写接口多线程压测Redis,性能爆炸,压测数据如下:

这个数据巅峰数值达到了11万,比传言的还要高。

Redis-cluster压测

压完单点Redis服务之后,信心暴增,在求了运维之后,又加了了一些机器,利用6台Linux服务器搭建6主6从的Redis-cluster集群,如下图所示:

于是立马代码,着手压测,压测结果却不尽人意,下面请看数据:

分析了下上面的压测数据,Redis机器添加了6倍,性能突破1倍都没有,肯定是哪里出了问题,于是继续分析代码,原来使用JedisPoll的时候,每次使用完一个链接,又得丢给池子,性能可能损耗在这里,于是立马改代码,将线程不用再丢弃,每个压测线程使用一个Redis的链接,得到的数据非常爆炸。

JedisPool设置了100个链接,且用100个线程同时请求。

又设置了1000个连接

由此发现连接数越多也不是最好的,反而会导致性能下降,这个就是我们平时所谓的性能调优。

总结

1.Redis的单机性能达到10万QPS,集群的性能损失也不是很多,6节点的集群我们压到了50多万,只要合理使用Redis,Redis的性能远远够用。

2.Java服务器与Redis的连接数设置不是越多越好,一定是存在一个性能最好的中间值,这个需要不停的压测与调优才能得到。

不与天斗Domino

不与天斗Domino

Programmer & Architect

183 日志
15 分类
224 标签
© 2013 - 2023 天地维杰网 京ICP备13019191号-1
Powered by - Hugo v0.63.2
Theme by - NexT
0%