服务器压力测试

目录

  • 一、磁盘性能测试
    • 安装fio磁盘性能测试工具
    • 测试内容为顺序读、随机读、顺序写、随机写、随机读写
    • 结果分析
  • 二、CPU性能测试
    • 安装sysbench性能测试工具
    • 结果分析
  • 三、内存性能测试
    • 结果分析
  • 四、网络性能测试
    • 测试iperf3工具
    • 测试结果分析
    • 1.测试TCP吞吐量
    • 2 . 测试UDP丢包和延迟

此次测试服务器为虚拟机(192.168.16.70),物理机(192.168.16.25)
测试内容包括:磁盘性能测试、CPU性能测试、内存性能测试、网络性能测试

一、磁盘性能测试

安装fio磁盘性能测试工具

yum -y install epel-release
yum install -y fio
yum install libaio-devel

测试内容为顺序读、随机读、顺序写、随机写、随机读写

fio  -filename=/data/fiotest  -direct=1 -iodepth 1 -thread -rw=read -ioengine=libaio -bs=16k -size=50G -numjobs=30 -runtime=100 -group_reporting -name=readtestfio  -filename=/data/fiotest  -direct=1 -iodepth 1 -thread -rw=randread -ioengine=libaio -bs=16k -size=50G -numjobs=30 -runtime=100 -group_reporting -name=randreadtestfio -filename=/data/fiotest -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=16k -size=50G -numjobs=30 -runtime=100 -group_reporting -name=writetestfio -filename=/data/fiotest -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=libaio -bs=16k -size=50G -numjobs=30 -runtime=100 -group_reporting -name=randwritetestfio -filename=/data/fiotest -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=libaio -bs=16k -size=50G -numjobs=30 -runtime=100 -group_reporting -name=randrwtest 

参数定义

filename=/tmp/fiotest  支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb direct=1 测试过程绕过机器自带的buffer,使测试结果更真实 -thread:使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。rw=randwread 测试随机读的I/O rw=randwrite 测试随机写的I/O rw=randrw 测试随机混合写和读的I/O rw=read 测试顺序读的I/O rw=write 测试顺序写的I/O rw=rw 测试顺序混合写和读的I/O bs=4k 单次io的块文件大小为4k bsrange=512-2048 同上,提定数据块的大小范围 size=50g 本次的测试文件大小为50g,以每次16k的io进行测试 numjobs=30 本次的测试线程为30 runtime=100 测试时间为100秒,如果不写则一直将50g文件分16k每次写完为止 ioengine=libaio io引擎使用libaio方式#
rwmixwrite=30 在混合读写的模式下,写占30% group_reporting 关于显示结果的,汇总每个进程的信息 lockmem=1g 只使用1g内存进行测试 
zero_buffers 用0初始化系统
buffer nrfiles=8 每个进程生成文件的数量

结果分析

randreadtest: (g=0): rw=randread, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=libaio, iodepth=1
...
fio-3.7
Starting 30 threadsrandreadtest: (groupid=0, jobs=30): err= 0: pid=70058: Mon Feb 13 14:03:04 2023read: IOPS=394, BW=6304KiB/s (6455kB/s)(1848MiB/300101msec)slat (usec): min=5, max=2693, avg=34.48, stdev=14.56clat (usec): min=131, max=1014.7k, avg=76084.14, stdev=80707.24lat (usec): min=165, max=1014.7k, avg=76119.37, stdev=80707.24clat percentiles (msec):|  1.00th=[    4],  5.00th=[    6], 10.00th=[    9], 20.00th=[   16],| 30.00th=[   25], 40.00th=[   35], 50.00th=[   48], 60.00th=[   66],| 70.00th=[   90], 80.00th=[  124], 90.00th=[  182], 95.00th=[  241],| 99.00th=[  372], 99.50th=[  426], 99.90th=[  567], 99.95th=[  634],| 99.99th=[  802]bw (  KiB/s): min=   31, max=  640, per=3.34%, avg=210.53, stdev=86.17, samples=17962iops        : min=    1, max=   40, avg=13.10, stdev= 5.39, samples=17962lat (usec)   : 250=0.01%, 500=0.02%, 750=0.01%lat (msec)   : 2=0.05%, 4=1.56%, 10=9.94%, 20=13.73%, 50=25.94%lat (msec)   : 100=22.34%, 250=21.98%, 500=4.22%, 750=0.19%, 1000=0.01%cpu          : usr=0.02%, sys=0.07%, ctx=118608, majf=0, minf=3452IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%issued rwts: total=118242,0,0,0 short=0,0,0,0 dropped=0,0,0,0latency   : target=0, window=0, percentile=100.00%, depth=1Run status group 0 (all jobs):READ: bw=6304KiB/s (6455kB/s), 6304KiB/s-6304KiB/s (6455kB/s-6455kB/s), io=1848MiB (1937MB), run=300101-300101msecDisk stats (read/write):sda: ios=118184/928, merge=0/2224, ticks=8989961/890698, in_queue=9821141, util=100.00%

指标主要看每秒 I/O 数(iops) 和 硬盘传输数据流的速度(BW)
在这里插入图片描述

二、CPU性能测试

安装sysbench性能测试工具

yum -y install epel-release
yum -y install sysbench

结果分析

pro70

sysbench cpu --cpu-max-prime=20000 --threads=8 --time=30 run
sysbench 1.0.17 (using system LuaJIT 2.0.4)Running the test with following options:
Number of threads: 8
Initializing random number generator from current timePrime numbers limit: 20000Initializing worker threads...Threads started!CPU speed:events per second:  2787.23General statistics:total time:                          30.0028stotal number of events:              83630Latency (ms):min:                                    2.70avg:                                    2.87max:                                   19.4395th percentile:                        3.36sum:                               239795.21Threads fairness:events (avg/stddev):           10453.7500/47.54execution time (avg/stddev):   29.9744/0.01Prime numbers limit: 20000,每个线程产生的素数上限均为2000
events per second: 2787.23,所有线程每秒完成了2787.23次event
total time: 30.0028s,共耗时30秒
total number of events: 83630,30秒内所有线程一共完成了83630次event
min: 2.70,完成1次event的最少耗时2.70秒
avg: 2.87,所有event的平均耗时2.87毫秒
max: 19.43,完成1次event的最多耗时19.43毫秒
95th percentile: 3.36, 95%次event在3.36秒毫秒内完成
sum: 239795.21,每个线程耗时30秒,8个线程叠加耗时就是240秒
events (avg/stddev): 10453.7500/47.54 // 平均每个线程完成10453次event,标准差为47
execution time (avg/stddev): 29.9744/0.01 // 每个线程平均耗时30秒,标准差为0

pro25

sysbench cpu --cpu-max-prime=20000 --threads=8 --time=30 runsysbench 1.0.17 (using system LuaJIT 2.0.4)Running the test with following options:
Number of threads: 8
Initializing random number generator from current timePrime numbers limit: 20000Initializing worker threads...Threads started!CPU speed:events per second:  3799.96General statistics:total time:                          30.0027stotal number of events:              114027Latency (ms):min:                                    2.03avg:                                    2.10max:                                    7.7695th percentile:                        2.39sum:                               239966.24Threads fairness:events (avg/stddev):           14253.3750/22.81execution time (avg/stddev):   29.9958/0.00Prime numbers limit: 20000,每个线程产生的素数上限均为2000
events per second: 3799.96 ,所有线程每秒完成了3799.96次event
total time: 30.0027s,共耗时30秒
total number of events: 114027,30秒内所有线程一共完成了114027次event
min: 2.03,完成1次event的最少耗时2.03秒
avg: 2.10,所有event的平均耗时2.10毫秒
max: 7.76,完成1次event的最多耗时7.76毫秒
95th percentile: 2.39, 95%次event在2.39秒毫秒内完成
sum: 239966.24,每个线程耗时30秒,8个线程叠加耗时就是240秒
events (avg/stddev): 14253.3750/22.81 // 平均每个线程完成14253.3750/22.81次event,标准差为23
execution time (avg/stddev): 29.9958/0.00 // 每个线程平均耗时30秒,标准差为0

三、内存性能测试

结果分析

pro70

sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=seq run
sysbench 1.0.17 (using system LuaJIT 2.0.4)Running the test with following options:
Number of threads: 12
Initializing random number generator from current timeRunning memory speed test with the following options:block size: 8KiBtotal size: 102400MiBoperation: writescope: globalInitializing worker threads...Threads started!Total operations: 10112320 (1011060.89 per second)79002.50 MiB transferred (7898.91 MiB/sec)General statistics:total time:                          10.0001stotal number of events:              10112320Latency (ms):min:                                    0.00avg:                                    0.01max:                                   28.0395th percentile:                        0.01sum:                               116284.49Threads fairness:events (avg/stddev):           842693.3333/45270.47execution time (avg/stddev):   9.6904/0.04total number of events:  13107200    读/写一个内存块的events数
min:  0.00  最小耗时 这里等于0是因为内存块太小,返回的结果数值精度不够
sum: 62961.90    所有线程总耗时62962ms
events (avg/stddev):  1638400.0000/0.00   平均每线程完成events数1638400/标准差0
execution time (avg/stddev):   7.8702/1.15      平均每线程执行时间8s 标准差1s

pro25

sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=seq run
sysbench 1.0.17 (using system LuaJIT 2.0.4)Running the test with following options:
Number of threads: 12
Initializing random number generator from current timeRunning memory speed test with the following options:block size: 8KiBtotal size: 102400MiBoperation: writescope: globalInitializing worker threads...Threads started!Total operations: 7038742 (703511.93 per second)54990.17 MiB transferred (5496.19 MiB/sec)General statistics:total time:                          10.0002stotal number of events:              7038742Latency (ms):min:                                    0.00avg:                                    0.02max:                                    0.4995th percentile:                        0.02sum:                               118420.01Threads fairness:events (avg/stddev):           586561.8333/6249.45execution time (avg/stddev):   9.8683/0.00total number of events:  7038742   读/写一个内存块的events数
min:  0.00  最小耗时 这里等于0是因为内存块太小,返回的结果数值精度不够
sum: 118420.01    所有线程总耗时118420ms
events (avg/stddev):  586561.8333/6249.45   平均每线程完成events数586562/标准差6249
execution time (avg/stddev):   9.8683/0.00      平均每线程执行时间10s 标准差0s

四、网络性能测试

测试iperf3工具

yum install -y sysstat wget tar automake make gcc
wget https://downloads.es.net/pub/iperf/iperf-3.9.tar.gz
tar -zxvf iperf-3.9.tar.gz 
cd iperf-3.9
./configure && make && make install

测试结果分析

要使用iperf,首先要启用一个服务端,这里指定服务端的IP地址为pro70,在此服务器上运行“iperf3 -s -i 2”即可开启iperf的服务器模式。在默认情况下,iperf3将在服务端打开一个5201监听端口,此时就可以在pro25服务器作为客户端执行iperf功能测试了。

pro70

[root@pro70 ~]# iperf3 -s -i 2 
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

1.测试TCP吞吐量

pro25

[root@pro25 ~]# iperf3 -c 192.168.16.70 -F /data/fiotest -i 5 -t 180
Connecting to host 192.168.16.70, port 5201
[  5] local 192.168.16.25 port 51856 connected to 192.168.16.70 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-5.00   sec  4.76 GBytes  8.17 Gbits/sec  670   1.18 MBytes       
[  5]   5.00-10.00  sec  4.80 GBytes  8.25 Gbits/sec  237    854 KBytes       
[  5]  10.00-15.00  sec  4.78 GBytes  8.21 Gbits/sec  1172    604 KBytes       
[  5]  15.00-20.01  sec  2.21 GBytes  3.79 Gbits/sec   28   1014 KBytes       
[  5]  20.01-25.00  sec  1.10 GBytes  1.90 Gbits/sec   42    788 KBytes       
[  5]  25.00-30.00  sec  1.06 GBytes  1.83 Gbits/sec   71    274 KBytes       
[  5]  30.00-35.00  sec  1.08 GBytes  1.85 Gbits/sec   32    389 KBytes       
[  5]  35.00-40.00  sec  1.09 GBytes  1.86 Gbits/sec   20    365 KBytes       
[  5]  40.00-45.00  sec  1.10 GBytes  1.88 Gbits/sec   98    304 KBytes       
[  5]  45.00-50.00  sec  1.08 GBytes  1.85 Gbits/sec   22    393 KBytes       
[  5]  50.00-55.00  sec  1.10 GBytes  1.88 Gbits/sec    1    406 KBytes       
[  5]  55.00-60.00  sec  1.06 GBytes  1.82 Gbits/sec   43    337 KBytes       
[  5]  60.00-65.00  sec  1.10 GBytes  1.88 Gbits/sec    0    397 KBytes       
[  5]  65.00-70.00  sec  1.09 GBytes  1.88 Gbits/sec    0    403 KBytes       
[  5]  70.00-75.00  sec  1.10 GBytes  1.89 Gbits/sec    0    419 KBytes       
[  5]  75.00-80.00  sec  1.07 GBytes  1.84 Gbits/sec    0    427 KBytes       
[  5]  80.00-85.00  sec  1.09 GBytes  1.88 Gbits/sec    0    434 KBytes       
[  5]  85.00-90.00  sec  1.09 GBytes  1.88 Gbits/sec    0    443 KBytes       
[  5]  90.00-95.00  sec  1.09 GBytes  1.87 Gbits/sec    0    448 KBytes       
[  5]  95.00-100.02 sec  1.06 GBytes  1.81 Gbits/sec    0    457 KBytes       
[  5] 100.02-105.00 sec  1.09 GBytes  1.88 Gbits/sec    0    465 KBytes       
[  5] 105.00-110.00 sec  1.06 GBytes  1.82 Gbits/sec    0    475 KBytes       
[  5] 110.00-115.00 sec  1.09 GBytes  1.87 Gbits/sec    0    496 KBytes       
[  5] 115.00-120.01 sec  1.09 GBytes  1.88 Gbits/sec    0    663 KBytes       
[  5] 120.01-125.00 sec  1.09 GBytes  1.88 Gbits/sec    0    663 KBytes       
[  5] 125.00-130.00 sec  1.09 GBytes  1.87 Gbits/sec    0   1003 KBytes       
[  5] 130.00-135.00 sec  1.06 GBytes  1.82 Gbits/sec    0   1003 KBytes       
[  5] 135.00-140.00 sec  1.08 GBytes  1.86 Gbits/sec    0   1003 KBytes       
[  5] 140.00-145.00 sec  1.10 GBytes  1.89 Gbits/sec    0   1003 KBytes       
[  5] 145.00-150.00 sec  1.09 GBytes  1.87 Gbits/sec    0   1.42 MBytes       
[  5] 150.00-155.00 sec  1.09 GBytes  1.87 Gbits/sec    0   1.42 MBytes       
[  5] 155.00-160.00 sec  1.09 GBytes  1.88 Gbits/sec    0   1.42 MBytes       
[  5] 160.00-165.00 sec  1.09 GBytes  1.87 Gbits/sec    0   1.42 MBytes       
[  5] 165.00-170.00 sec  1.04 GBytes  1.78 Gbits/sec   33   1.01 MBytes       
[  5] 170.00-174.36 sec   982 MBytes  1.89 Gbits/sec    0   1.01 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-174.36 sec  50.0 GBytes  2.46 Gbits/sec  2469             senderSent 50.0 GByte / 50.0 GByte (100%) of /data/fiotest
[  5]   0.00-174.36 sec  50.0 GBytes  2.46 Gbits/sec                  receiveriperf Done.

在这此测试中 我们通过“-F”参数指定了一个50G的fiotest文件作为iperf要传输的数据,需要同时指定一个“-t”参数来设置要测试传输的时间,这个时间尽量设置长一些,因为在默认传输时间10秒内,这个文件可能还没有传完。

通过结果我们可以看到传输速率平均在2.46 Gbits/sec

2 . 测试UDP丢包和延迟

iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过iperf的“-u”参数即可测试UDP应用的传输性能

pro70

[root@pro25 ~]# iperf3 -c 192.168.16.70 -u -b 1G -f M -i 3
Connecting to host 192.168.16.70, port 5201
[  5] local 192.168.16.25 port 47184 connected to 192.168.16.70 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-3.00   sec   358 MBytes   119 MBytes/sec  258918  
[  5]   3.00-6.00   sec   358 MBytes   119 MBytes/sec  258955  
[  5]   6.00-9.00   sec   356 MBytes   119 MBytes/sec  257490  
[  5]   9.00-10.00  sec   121 MBytes   121 MBytes/sec  87860  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.16 GBytes   119 MBytes/sec  0.000 ms  0/863223 (0%)  sender
[  5]   0.00-10.00  sec  1.16 GBytes   118 MBytes/sec  0.008 ms  5513/863223 (0.64%)  receiveriperf Done.

此次测试使用iperf3传输1DB的UDP数据包的输出结果

重点关注虚线下的一段内容,在这段输出中,“Jitter”列表示抖动时间,或者称为传输延迟,“Lost/Total”列表示丢失的数据报和总的数据报数量,后面的0%是平均丢包的比率。

这个输出结果过于简单,要了解更详细的UDP丢包和延时信息,可以在iperf服务端查看,因为在客户端执行传输测试的同时,服务端也会同时显示传输状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5947.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义MVC框架优化

目录 一、前言 二、优化问题 1.子控制器的初始化配置问题 2.页面跳转优化代码冗余问题 3.优化参数封装问题 三、进行优化 1.解决子控制器初始化配置 2.解决页面跳转的代码冗余问题 3.解决优化参数封装问题 4.中央控制器 一、前言 在自定义MVC框架原理中讲述了什么是…

基于matlab使用点特征匹配稳定从抖动平台捕获的视频(附源码)

一、前言 此示例演示如何稳定从抖动平台捕获的视频。稳定视频的一种方法是跟踪图像中的显著特征,并将其用作锚点以消除与其相关的所有扰动。但是,此过程必须了解第一个视频帧中这种显着特征的位置。在此示例中,我们探索了一种无需任何此类先…

亚马逊云科技中国峰会聚焦生成式AI等前沿科技,探讨当下时代的挑战与机遇

6月27日,“2023亚马逊云科技中国峰会”在上海世博中心盛大启幕! 亚马逊全球副总裁、亚马逊云科技大中华区执行董事张文翊全面阐述了在当下这个挑战与机遇并存的时代,面对生成式AI等前沿科技带来的新挑战和新机遇,企业需要“面向未…

使用 Docker 高效搭建本地开发环境(详细教程)

Docker本地开发环境的好处 试错 对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境…

阿里巴巴开源Chat2DB v1.0.11 初体验

阿里巴巴开源Chat2DB v1.0.11 初体验 前言什么是Chat2DB下载安装安装配置Chat2DB初体验配置数据源准备测试数据认识几个功能菜单开始测试自然语言转SQLSQL解释SQL优化 使用总结后续功能结语 前言 作为一名阿里巴巴开源项目的拥护者,从Chat2DB开源至今都有关注这个开…

Spring 项目过程及如何使用 Spring

文章目录 1.创建 Spring 项目步骤1.1 创建 Maven 项目1.2添加 Spring 框架支持1.3 添加启动项2.如何使用 Spring2.1 存储 Bean 对象2.1.1 创建 Bean对象2.1.2 将 Bean对象注册到容器中 2.2 获取并使用 Bean对象2.2.1 使用 ApplicationContext 获取对象2.2.2 使用 BeanFactory 获…

【裸机开发】GPT 定时器(三) —— 使用GPT实现高精度延时

延时最简单粗暴的方式就是使用空循环来延时,依赖的是时钟主频(默认是396M)来计数,一旦修改了 6ull 的时钟主频,延时效果就会存在偏差。 因此我们可以使用 EPIT 或者 GPT 的计数功能实现高精度延时,EPIT 是…

探索MediaPipe的人像分割

MediaPipe是Google开源的计算机视觉处理框架,基于TensorFlow来训练模型。图像分割模块提供人像分割、头发分割、多类分割。本文主要探索如何实现人像分割,当然在人像分割基础上,我们可以做背景替换、背景模糊。 目录 一、配置参数与模型 1…

【AIGC】BaiChuan7B开源大模型介绍、部署以及创建接口服务

模型介绍 baichuan-7B是由百川智能开发的一个开源的大规模预训练模型。基于Transformer结构,在大约1.2万亿tokens上训练的70亿参数模型,支持中英双语,上下文窗口长度为4096。在标准的中文和英文权威benchmark(C-EVAL/MMLU&#x…

探索思维导图:提升思维能力与效率的利器

思维导图作为一种强大的思考工具,已经被广泛应用于各个领域,从学习、工作到创意思维和项目管理。 本文将为您介绍思维导图的基本概念、使用方法以及它对思维能力和效率提升的价值。通过学习和掌握思维导图,您将能够更系统地组织和表达您的思…

M3 architecure

using one picture from arm document . 1. 3级别流水线哈弗架构 采用三级流水线,为了简单,常见的流水线5级,对于带有OOOB的12级较为常见,足可见M3的架构简化了很多 2. thumb 加ARMV7-M ISA 指令集就是硬件和软件的中间交互规则…

群载波应急广播主机的应用

一、 概述 群载波主机是专为山洪灾害预警、气象预警、地质灾害预警设计的一款智能IP群载波主机。该群载波主机可通过网络实现与控制中心通讯,用户可实时远程控制功放的开关机状态以及检测设备的主要信息。群载波主机主要用于接收网络信号,与控制中心通讯…