Redis 性能测试

目标:通过对常规的Redis性能测试,使学员快速了解到在X86架构和ARM架构的性能差异,以及熟练使用benchmark压力测试工具,分析比较不同架构的Redis性能差异.

Redis On Graviton 性能测试

测试环境说明

架构图中部署3台主机,分别是:\

1台压测服务器(沿用 压力测试机
1台X86的Redis(沿用实验2的 x86 Redis服务器)
1台ARM架构的Redis(沿用实验2的 Graviton Redis服务器)
Redis使用6.0.9版本

1 测试前准备工作

1.1按照架构图部署测试环境,检查现有环境中部署3台主机,分别是1台压测服务器,提供压测,2台Redis服务器,1台X86(模版已部署),1台ARM架构,资源如下图

1.2 检查压测服务器,请继续延续使用Java压测的服务器,无需创建新的主机

压测EC2已经通过模版创建,参数如下:

名称: Graviton_GameDay_Stress
实例类型:c5.2xlarge
Amazon Machine Image(AMI): Amazon Linux 2 AMI(HVM)
架构:64位(ARM)
密钥对名称:模版创建的密钥对ee-default-keypair.pem
VPC: gameday1-VPCStack
子网:Public-subnet 1A
安全组:gameday1-SecurityGroupStack-XXXXXXX-APPServerSecurityGroup
存储:50GB

1.3 继续使用之前的迁移到Graviton的redis主机目标主机Graviton_Target-Redis。

2 检查Redis 服务器环境

2.1登录Graviton_Target-Redis主机

使用putty或者第三方工具通过跳板机Bastion登Graviton_GameDay_Redis2目标服务器,也可以使用aws ssm工具登录

打开命令行窗口

#登录跳板机
ssh -i /<your private key> ec2-user@<your Bastion IP>
#登录Graviton redis服务器
ssh -i /<your private key> ec2-user@<your Graviton_Target-Redis IP>

如打算使用SSM登录请参考Java部分,请先确认EC2是否具有SSM的角色,请查看如下图

确认有对应的角色,则可以使用SSM连接登录。

2.2 查询X86 EC2 Redis和Graviton_Target-Redis是否运行正常

Redis目标主机上分别运行netsta -natp命令,

netstat -natp

效果如下图: 查看到端口6379处于监听中,说明redis服务正常。

exit

运行exit,回到跳板机Bastion

再跳转登录到Graviton_GameDay_Redis1,查询X86 redis的主机Graviton_GameDay_Redis1 IP地址

然后通过跳板机登录到Graviton_GameDay_Redis1

ssh -i /<your private key> ec2-user@<your Graviton_GameDay_Redis1 IP>

运行netsta -natp查看redis服务是否正常运行。

netstat -natp

效果如下图: 查看到端口6379处于监听中,说明redis服务正常。

2.3 部署benchmark压测服务,使用putty或者第三方工具登录压力模拟服务器,也可以使用aws ssm工具登录

使用SSM登录,或者打开一个新的命令行窗口,使用SSH登录Graviton_GameDay_Stress主机,命令如下:

ssh -i /<your private key> ec2-user@<Graviton_GameDay_Stress IP>

请在Graviton_GameDay_Stress压测服务器上执行以下命令,部署redis 自带的benchmark压测服务

cd /home/ec2-user/
Redisversion=6.0.9
sudo amazon-linux-extras install epel -y
sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel -y
sudo wget https://download.redis.io/releases/redis-$Redisversion.tar.gz  -O ./redis.tar.gz 

sudo tar xvzf redis.tar.gz
cd redis-$Redisversion
sudo make BUILD_TLS=yes

3 开始对redis进行压力测试

下载压测excel模版文档,对压测结果进行记录和比较

3.1 请在Graviton_GameDay_Stress压测服务器上执行以下命令,请把 redis server private IP 替换成您的需要测试的Redis服务器的私网IP

home/ec2-user/redis-6.0.9/src/redis-benchmark -h <redis-server IP> -c 200 -r 100000000 -n 20000000 -t get,set,lpush,lpop -q -P 100

参数说明:
-c 模拟客户端连接数
-r 用于测试的随机key数量
-n 发送的请求数
-t 发送的命令类型
-q 静默模式,只输出query/sec
-P Pipeline 请求的数量

执行结果如下,记录结果到excel 文档:

/home/ec2-user/redis-6.0.9/src/redis-benchmark -h 172.31.39.141 -c 200 -r 100000000 -n 20000000 -t get,set,lpush,lpop -q -P 100
SET: 624519.94 requests per second
GET: 793553.62 requests per second
LPUSH: 1191435.88 requests per second
LPOP: 973057.62 requests per second

4 测试总结

通过对ARM和X86的 EC2主机分别做压测,并记录测试的最终数据, 我们可以发现ARM架构gravition的服务器在吞吐量和延迟上的表现有明显优势

测试结束请不要关闭压测服务器,以待后续数据库压测使用。