资讯专栏INFORMATION COLUMN

Redis压力测试——redis-benchmark

Achilles / 1496人阅读

摘要:吞吐量吞吐量是指系统在单位时间内处理请求的数量。不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。

1、redis-benchmark简介

​ redis-benchmark是官方自带的Redis性能测试工具,用来测试Redis在当前环境下的读写性能。在使用Redis的时候,服务器的硬件配置、网络状况、测试环境都会对Redis的性能有所影响,我们需要对Redis实时测试以确定Redis的实际性能。

  • 语法格式:
redis-benchmark [参数] [参数值]
  • 参数列表:
参数描述默认值
-h指定服务器主机名127.0.0.1
-p指定服务器端口6379
-s指定服务器 socket
-c指定并发连接数50
-n指定请求数10000
-d以字节的形式指定 SET/GET 值的数据大小2
-k1=keep alive 0=reconnect1
-rSET/GET/INCR 使用随机 key, SADD 使用随机值
-P通过管道传输 请求1
-q强制退出 redis。仅显示 query/sec 值
–csv以 CSV 格式输出
-l生成循环,永久执行测试
-t仅运行以逗号分隔的测试命令列表。
-IIdle 模式。仅打开 N 个 idle 连接并等待。

1.1、Redis安装

​ 测试系统是CentOS7.X版本的,需要确保c++环境已经安装,执行【gcc -v】查看系统是否有gcc环境,如果没有使用yum安装,windows版本可以跳过这步。

  • 安装gcc
yum install gcc-c++
  • 安装redis

redis下载地址:https://pan.baidu.com/s/13kHH-zU7vmh0YobyxhEmow,提取码:dmnx,下载后上传到服务器目录中。

# 解压tar -zxf redis-4.0.14.tar.gz# 进入解压目录cd redis-4.0.14# 编译make# 安装redis到/usr/local/redismake install PREFIX=/usr/local/redis# 复制配置文件到刚才的安装目录cp redis.conf /usr/local/redis/# 进入安装后的目录cd /usr/local/redis# 修改配置文件vim redis.conf# Redis后台启动修改 daemonize 为 yes# Redis服务器可以跨网络访问修改 bind 为 0.0.0.0# 开启aof持久化appendonly yes# 进入bin目录中启动redis,指定配置文件cd bin/./redis-server ../redis.conf

1.2、redis性能测试

​ redis启动后进入到bin目录中,执行以下命令进行性能测试:

# 执行测试性能命令./redis-benchmark -t set,get -n 100000

说明:因为测试的是本机的redis性能,所以没有指定IP和端口号。

-t:表示执行以逗号分隔的命令,执行的是set操作和get操作,如果不指定具体的值,测试的结果较多

  • 执行结果如下:
====== SET ======  100000 requests completed in 1.31 seconds  50 parallel clients  3 bytes payload  keep alive: 198.64% <= 1 milliseconds99.85% <= 2 milliseconds99.99% <= 3 milliseconds100.00% <= 3 milliseconds76335.88 requests per second====== GET ======  100000 requests completed in 1.26 seconds  50 parallel clients  3 bytes payload  keep alive: 199.27% <= 1 milliseconds100.00% <= 1 milliseconds79365.08 requests per second

​ 反馈结果:

​ SET部分和GET部分,只需要关注最后一句输出即可,以GET为例,上述输出:79365.08 requests per second,表示每秒的GET命令处理79365.08个请求,也就是QPS为7.9W个。

​ 这里的数据都是理想数据,测试出来的QPS不能代表实际生产的处理能力,在实际生产中,服务器的硬件配置、网络状况、测试环境都会对Redis的性能有所影响。

1.3、TPS、QPS、RT

​ 在描述系统的高并发能力时,经常根据以下三个指标来决定:

  • 响应时间RT:响应时间是指系统对请求作出响应的时间。一个系统通常会提供许多功能,而不同功能的业务逻辑也千差万别,因而不同功能的响应时间也不尽相同。在讨论一个系统的响应时间时,通常是指该系统所有功能的平均时间或者所有功能的最大响应时间
  • 吞吐量TPS:吞吐量是指系统在单位时间内处理请求的数量。不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。
  • 查询率QPS:每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在互联网中,经常用每秒查询率来衡量服务器的性能。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力,查询率通常是针对单机进行压力测试。

1.4、测试Redis性能

​ 在实际生产中,我们需要关心在应用场景中,redis能够处理的QPS是多少。我们需要估计生产的报文大小,使用benchmark工具指定-d数据块大小来模拟:

./redis-benchmark -t get -n 100000 -c 100 -d 2048

​ 指定并发数为100,数据大小为2048字节,在实际生产中,每个业务处理的数据大小不一致,取出一个最大的数据为基数进行测试即可,在程序里将数据的字节大小打印出来,使用redis-benchmark的-d参数指定数据大小。

​ 执行结果:

====== GET ======  100000 requests completed in 1.37 seconds  100 parallel clients  2048 bytes payload  keep alive: 194.15% <= 1 milliseconds98.86% <= 2 milliseconds99.80% <= 3 milliseconds99.90% <= 4 milliseconds99.92% <= 5 milliseconds99.93% <= 6 milliseconds99.96% <= 7 milliseconds100.00% <= 8 milliseconds100.00% <= 8 milliseconds73206.44 requests per second

​ 使用redis客户端登录到redis服务中,执行info命令查看redis的信息

# 使用Redis客户端./redis-cli# 在客户端中执行info命令127.0.0.1:6379> info

查看结果,输出的信息较多,查看# Memory下面的一些信息。

connected_clients:108 #redis连接数​used_memory:8367424 # Redis 分配的内存总量 used_memory_human:7.98Mused_memory_rss:11595776 # Redis 分配的内存总量(包括内存碎片) used_memory_rss_human:11.06Mused_memory_peak:8367424used_memory_peak_human:7.98M #Redis所用内存的高峰值used_memory_peak_perc:100.48%

​ 需要关注used_memory_peak_human(redis已用内存)和used_memory(分配的内存总量),当used_memory_peak_human接近used_memory时就需要注意了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121606.html

相关文章

  • 压力测试 云内存 UMem Redis

    摘要:测试脚本测试结果测试结果读写比例快杰快杰快杰快杰快杰 压力测试本篇目录物理机普通机型测试快杰主备redis产品测试物理机普通机型测试测试条件1.开启pipeline,不同连接数.2.关闭pipeline,不同连接数3.开启pipeline,不同Data size测试脚本模板:#!/bin/bash for clients in {1,2,4,8,16,32,64,128,256,512,80...

    ernest.wang 评论0 收藏654
  • 基于一致性哈希的分布式内存键值存储——CHKV

    摘要:基于一致性哈希的分布式内存键值存储。失效未经请求与数据转移就断开了和的连接则需要及时通知。可见编译模式并没有比混合模式效果好,因为即使是不热点的代码也要编译,反而浪费时间,所以一般还是选择默认的混合模式较好。 Consistent Hashing based Key-Value Memory Storage 基于一致性哈希的分布式内存键值存储——CHKV。目前的定位就是作为 Cache...

    zhangke3016 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<