前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云服务器基准性能测试

云服务器基准性能测试

原创
作者头像
谭银
修改2023-02-20 17:02:19
5K0
修改2023-02-20 17:02:19
举报

云服务器基准测试

测试说明:基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试;云服务器基准测试主要是相同软件版本下不同硬件的性能对比测试。

测试工具:

网络性能测试

带宽性能(TCP)

性能指标:测试网络吞吐速率

测试工具:netperf

centos
# 下载netperf
wget -O netperf-2.7.0.tar.gz -c  https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.7.0
tar zxf netperf-2.7.0.tar.gz
cd netperf-netperf-2.7.0
# 安装编译
./autogen.sh && ./configure && make && make install

ubuntu
# 下载安装netperf
sudo apt install netperf -y

测试方法:

1. S1上安装上安装netperf的netserver作为服务器server端,

2. C1、C2上安装netperf作为客户client端,

3. 在不运行应用情况下,C1和C2同时压测S1,测试S1的网络TCP带宽性能;

4. 持续时间为3分钟,取S1收到压力30秒后持续2分钟的带宽平均值;

5. 分别对计算型实例、通用型实例的TCP、TCP_RR、TCP_CRR流进行测试;

6. 分别针对场景1、2、3分别按照64、512、1500、2048字节的吞吐速率进行上述测试;

7. 每个过程记录S的CPU、网卡利用率;

关注指标:rxkB/s的值,即为收带宽的值

测试步骤:

执行以下命令:

1.在服务端启动server命令:

# 使用shell脚本快速启动,脚本内容如下
for i in {7000..7015}
do 
    echo $i
    netserver -p $i
done
注:这里默认16条流,如需修改数量,只需修改7015值即可

2.客户端发起client测试命令(与server端的port数匹配):

# 使用shell脚本快速启动,脚本内容如下
client1:
size=$1
for i in {7000..7007}
do
    echo $i
    netperf -H <server端ip> -p $i -t TCP_STREAM -l 180 -- -m $size &
done

client2:
size=$1
for i in {7008..7015}
do
    echo $i
    netperf -H <server端ip> -p $i -t TCP_STREAM -l 180 -- -m $size &
done
# 注:如需测试TCP_RR等,只需要替换TCP_STREAM即可

参数备注:

-H 接收端IP地址 -p 端口号 -t 发包协议类型,可以是TCP_STREAM或者UDP_STREAM -l 测试时长 -m 数据包大小

3.查看结果

在server端使用sar采集平均带宽的命令:

sleep 30;sar -n DEV 1 120

如sar命令无法执行,安装sar工具 yum install sysstat

测试5次,取5次的平均值作为结果

rxkB/s乘以8,再除以1000转换为Mb/s

取sar结果里rxkB/s的值,即为收带宽的值,取5次测试结果取平均值。

网络(UDP)

性能指标:测试网络转发性能、抖动、传输速率

测试工具:iperf3+qperf

# iperf3安装
yum install -y iperf3

# qperf安装
yum install -y qperf

测试方法:

Iperf测试方法:

1. S1上安装上安装iperf作为服务器server端,用于接收;

2. C1、C2上安装iperf作为客户client端,用于发送数据;

3. 在不运行应用情况下,C1和C2同时压测S1,测试S1的网络UDP带宽性能;

4. 持续时间为10分钟,取S1收到压力1秒后持续8分钟的带宽平均值;

5. 分别对计算型实例、通用型实例的场景1、2、3,按照64、512、1500、2048字节的吞吐速率进行上述测试;

6. 测试时长每次10分钟,记录S的CPU、网卡利用率。

测试步骤:

1.在服务器端启动server命令:

# 使用shell脚本快速启动,脚本内容如下
server:
#!/bin/bash
for i in {5000..5015}
do
    echo $i
    iperf3 -s -p $i >/dev/null 2>&1 &
done

2.客户端发起client测试命令(与server端的port数匹配):

client1:
#!/bin/bash
size=$1
for i in {5000..5007}
do
    echo $i
    iperf3 -c <server端ip> -b 0M -u -t 600 -l $size -p $i -i 0 &
done
client2:
#!/bin/bash
size=$1
for i in {5008..5015}
do
    echo $i
    iperf3 -c <server端ip> -b 0M -u -t 600 -l $size -p $i -i 0 &
done
# 注:iperf3 -b参数表示客户端发包限速,-b 0M,表示不做限速。实测时发现丢包很严重,原因是server端来不及处理client端发的包。这里可以调整-b 的参数观察不丢包时候客户端限制应该是多少。

参数备注:

P: 要运行的并行客户端流的数量,服务器关闭之前保持的连接数,一般等于网卡队列数。默认是0,这意味着永远接受连接。客户端专用选项 b: 可选,以比特/秒为单位的目标带宽(0 表示无限制)(UDP 默认 1 Mbit/sec,TCP 无限制) t: 单次运行时长(默认10秒) J: 结果以json格式输出 R: 反向测试模式——服务器发送,客户端接收 f: 选择输出bandwidth单位 指定打印带宽数字的格式的字母。 支持的格式是 'k' = 千字节/秒 'K' = 千字节/秒 'm' = Mbits/sec 'M' = MBytes/sec 自适应格式可根据需要在千和兆之间进行选择。

Iperf结果示例:

Qperf测试方法:

  1. 在iperf压测基础上进行qperf测试;

S服务端:

qperf

C客户端:

qperf <server端ip> -m $size -vu tcp_bw tcp_lat udp_bw udp_lat
# 注:qperf 客户端 -m 指定的包大小,可以和iperf -l 参数中指定的包大小一致

记录结果:tcp带宽、延迟,udp带宽、延迟;

Qperf结果示例:

磁盘测试

性能指标:测试磁盘吞吐量

测试工具:sysbench

安装命令:

yum -y install sysbench

测试命令:

sysbench /usr/share/sysbench/oltp_read_write.lua  --db-driver=mysql --mysql-host=<数据库所在ip>  --mysql-port=3306 --mysql-user= --mysql-password=  --mysql-db=sbtest1 --tables=1 --table-size=20000000 --threads=64    --events=2000000000 --report-interval=10 --rand-type=uniform --time=100 --percentile=95 run

参数说明

--db-driver=数据库引擎指定
--mysql-host=被访问数据库的ip地址
--mysql-user=访问此数据库的用户名
--mysql-password=********
--mysql-db=被访问的db
--tables=创建表的个数
--table-size=单个表的数据量条数
--threads=访问数据库的线程数
--events=限制最大请求数,0表示不限制
--report-interval=每隔几秒报告一次结果,0表示禁用间隔报告
--rand-type=表示随机类型为固定模式
--time=限制最长执行时间,0表示不限制
--percentile=表示设定采样比例,默认是 95%,即丢弃5%的长请求

测试结果:

指标说明:

结果数据指标:

  • avg:平均响应时间
  • max:最大响应时间
  • 95percentile: 响应时间95分位数,分位数为可变参数
  • transaction: 每秒事务数
  • read/write requests: 每秒请求数

过程数据指标:

  • QPS:每秒查询数
  • TPS:每秒事务数
  • rtt:每秒响应时间95分位

业务测试

Mysql测试

性能指标:测试数据库TPS、QPS、平均响应时间和95分位时间,同时关注其测试过程中的cpu和磁盘使用情况

测试工具:sysbench

安装命令:

yum -y install sysbench

测试命令:

sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --mysql-host=<数据库所在ip> --mysql-port=3306 --mysql-user=root --mysql-password=test --mysql-db=sysbench1 --tables=1 --table-size=20000000 --threads=8 --events=2000000000 --report-interval=10 --rand-type=uniform --time=100 --percentile=95 run

参数说明:

--db-driver=数据库引擎指定
--mysql-host=被访问数据库的ip地址
--mysql-user=访问此数据库的用户名
--mysql-password=********
--mysql-db=被访问的db
--tables=创建表的个数
--table-size=单个表的数据量条数
--threads=访问数据库的线程数
--events=限制最大请求数,0表示不限制
--report-interval=每隔几秒报告一次结果,0表示禁用间隔报告
--rand-type=表示随机类型为固定模式
--time=限制最长执行时间,0表示不限制
--percentile=表示设定采样比例,默认是 95%,即丢弃5%的长请求

测试结果:

指标说明:

结果数据指标:

  • avg:平均响应时间
  • max:最大响应时间
  • 95percentile: 响应时间95分位数,分位数为可变参数
  • transaction: 每秒事务数
  • read/write requests: 每秒请求数

过程数据指标:

  • QPS:每秒查询数
  • TPS:每秒事务数
  • rtt:每秒响应时间95分位

Redis测试

性能指标:测试redis在set和get请求下的OPS、平均响应时间和每秒写入数据大小,同时关注其测试过程中的cpu、内存和带宽使用情况

测试工具:memtier_benchmark

安装命令:

1. 安装编译环境和依赖包
## 安装编译环境
yum install -y autoconf automake make gcc-c++
## 安装依赖包
yum install -y pcre-devel zlib-devel libmemcached-devel wget git

2. 编译安装libevent
cd /root
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar xvzf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable
./configure
make && make install

3. 更新库文件配置
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:\${PKG_CONFIG_PATH}" >> /etc/profile
source /etc/profile
ldconfig /usr/local/lib

4. 编译安装memtier_benchmark工具
cd /root
git clone https://github.com/RedisLabs/memtier_benchmark.git
cd memtier_benchmark
autoreconf -ivf
./configure --prefix=/usr/local/memtier
make && make install
echo "export PATH=/usr/local/memtier/bin:\${PATH}" >> /etc/profile
source /etc/profile

5. 验证安装
memtier_benchmark --help

测试命令:

Standalone(单机):

memtier_benchmark -s 127.0.0.1 -p 6379  -t 4 -c 50 -R -a 123456 --ratio=1:10 --test-time=20 --select-db=0 --hide-histogram -x 3 --expiry-range=60-90 --data-size-range=8-512 --data-size-pattern=R --out-file=/root/single.log

Cluster(集群):

memtier_benchmark -s 127.0.0.1 -p 6379 --cluster-mode -t 4 -c 50 -R -a 123456 --ratio=1:10 --test-time=20 --select-db=0 --hide-histogram -x 3 --expiry-range=60-90 --data-size-range=8-512 --data-size-pattern=R --out-file=/root/rc.log

参数说明:

选项

说明

-s

Redis数据库的连接地址

-p

Redis数据库的连接端口

-t

测试中使用的线程数(默认值为4)

-c

测试中模拟连接的客户端数量(默认值为50)

-R

基准测试将会使用随机化的测试数据

-a

Redis数据库的密码

--ratio

SET和GET操作的比率(默认值为1:10)

--test-time

测试时长(单位:秒)

--select-db

测试使用的DB数量

--hide-histogram

不输出详细的延迟柱状图

-x

完整测试的迭代执行次数

--expiry-range

测试键的过期时间是一个随机值,这个随机值在指定的范围之内

--data-size-range

基准测试使用的测试数据的大小是随机的,数据大小在指定的范围之内(min-max)

--data-size-pattern

当这个选项设置为R时,就需要和--data-size-range选项一起使用,测试数据的大小将会在指定的范围之内随机取值。当这个选项设置为S时,定义的测试数据大小将会在测试键的范围之内均匀分布,请参考--key-maximum选项。默认值为R

--out-file

输出结果文件的名称(默认值为stdout)

--cluster-mode

在集群模式下运行客户端

测试结果:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 云服务器基准测试
  • 网络性能测试
    • 带宽性能(TCP)
      • 网络(UDP)
      • 磁盘测试
      • 业务测试
        • Mysql测试
          • Redis测试
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档