linux 压力测试程序安装部署(包括CPU、内存、网站)
测试内存服务/版本 | 测试CPU服务/版本 |
---|---|
memtester 4.5.1 | sysbench 1.1.0 |
系统 | 版本 | 硬件配置 |
---|---|---|
Rocky | 9.0 | 10核 512G内存 40线程 |
这里先提及一下 centos 7.4~ 7.9 版本安装sysbench 服务
如下:
yum install epel-release
yum install sysbench
测试CPU负载:
sysbench --test=cpu --threads=38 --cpu-max-prime=2000000 run
参数详解:
--test
是sysbench要执行的测试类型,可选项包括fileio、cpu、memory、threads、mutex,可以使用--test参数指定。
--threads
是线程数,若设置为2,则sysbench会启动2个线程,同时分别进行素数的计算,默认值为1。
--cpu-max-prime
是素数生成数量的上限,默认值为10000。
添加循环: 循环100次,看看CPU是否正常
more cpu.sh
#!/bin/bash
for i in {1..100}
do
sysbench cpu --threads=38 --cpu-max-prime=2000000 run
done
回归正文:centos 安装会简单一些,直接yum安装就可以,但是在Rocky版本中,不能使用yum安装,只能去下载未编译安装的tar或zip包,自己解压,编译安装。
如果以上地址打不开:
链接:https://pan.baidu.com/s/17izV9i910IOzh9Bg69bULA
提取码:8888
百度网盘自提
将下载好的包放到服务器上
安装依赖包
yum install gcc gcc-c++ autoconf automake libtool lrzsz vim unzip -y
mv sysbench-master.zip /opt
cd /opt/
unzip sysbench-master.zip
mv sysbench-master sysbench
cd /opt/sysbench && ./autogen.sh
默认 sysbench 是支持测试mysql的 但是这里我们就只想用sysbench做性能测试,不想安装mysql。
那怎么办? 在后头加个–without-mysql就ok了(不编译测试mysql的功能模块)
如果要测试mysql ,前提是mysql必须安装好,如果没安装好mysql 编译安装时会报如下错误
configure: error: mysql_config executable not found
********************************************************************************
ERROR: cannot find MySQL libraries. If you want to compile with MySQL support,
please install the package containing MySQL client libraries and headers.
On Debian-based systems the package name is libmysqlclient-dev.
On RedHat-based systems, it is mysql-devel.
If you have those libraries installed in non-standard locations,
you must either specify file locations explicitly using
--with-mysql-includes and --with-mysql-libs options, or make sure path to
mysql_config is listed in your PATH environment variable. If you want to
disable MySQL support, use --without-mysql option.
./configure --prefix=/opt/sysbench --without-mysql
make && make install
编译完成
# 查看版本
[root@localhost sysbench]# ./bin/sysbench --version
sysbench 1.1.0
ln -s /opt/sysbench/bin/sysbench /usr/bin/
以上就完成安装了
开始压力测试
测试CPU负载:
sysbench --test=cpu --threads=38 --cpu-max-prime=2000000 run
注: 有的版本结尾需要加run 有的版本不需要。
参数详解:
--test
是sysbench要执行的测试类型,可选项包括fileio、cpu、memory、threads、mutex,可以使用--test参数指定。
--threads
是线程数,若设置为2,则sysbench会启动2个线程,同时分别进行素数的计算,默认值为1。
--cpu-max-prime
是素数生成数量的上限,默认值为10000。
添加循环: 循环100次,看看CPU是否正常
more cpu.sh
#!/bin/bash
for i in {1..100}
do
sysbench cpu --threads=38 --cpu-max-prime=2000000 run
done
测试内存
使用memtester 进行内存压力测试
下载memtester 安装包:
这个版本是我下载好的且编译安装完成的,下载解包就能用
但是适用rocky9及centos8系统的,centos7需要下载下面那个链接,自己编译安装
链接:https://pan.baidu.com/s/1F3vzj_iuthuDSArPg8zTeQ
提取码:8888
此版本是没有编译安装过的,下载之后需 make && make install
链接:https://pan.baidu.com/s/1pVkROrj2I87niVKyoduOdw
提取码:8888
如果运行报上图的错
./memtester: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./memtester)
./memtester: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./memtester)
则下载没有编译安装过的版本
下载完成之后
tar -xf memtester-4.5.1.tar.gz
cd memtester-4.5.1/
make && make install
报错一:
-bash: make: command not found
处理:
yum -y install make
报错二:
./compile: line 3: exec: cc: not found
make: *** [Makefile:82: memtester.o] Error 127
处理:
yum -y install gcc
继续运行
make && make install
nohup ./memtester 500G 2 > cpu.log &
将第一个编译安装好的包下载到本地,上传至服务器
tar -xf memtester-4.5.1.bak.tar.gz
cd memtester-4.5.1
free -h # 查看内存大小
启用压力测试命令:
nohup ./memtester 500G 2 > cpu.log &
命令详解:
500G: 是内存大小,指定内存大小不能大过服务器原本内存
例:目前设备内存 512G 查看时是 503G 那压力测试大小最高只能是502G 我选择500G
2: 是测试几次 2是循环测试2次
需要时间大概是一天一夜。运行的时候就指定到后台运行,最后查看日志即可,正常情况都是ok就可以
也可以在测试的时候使用 top 实时查看
查看进度条与CPU温度
yum -y install lm_sensors
vim mem.sh
sensors | grep "Physical\|Package" | awk '{print $4}'
echo '#####################################################################################'
cat /opt/src/mem.log
echo -e "\n"
echo '#####################################################################################'
free -h
执行结果如下:
+56.0°C
+51.0°C
#####################################################################################
memtester version 4.5.1 (64-bit)
Copyright (C) 2001-2020 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 125952MB (132070244352 bytes)
got 125952MB (132070244352 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : ok
Random Value : \
#####################################################################################
total used free shared buff/cache available
Mem: 125Gi 124Gi 1.1Gi 5.0Mi 339Mi 664Mi
Swap: 4.0Gi 44Mi 4.0Gi
网站压力测试
使用的是ab命令:
ab是一个用于 Apache HTTP服务器的压力测试工具,它可以模拟多个并发用户对一个网站进行访问,从而帮助评估服务器的性能。
安装ab命令:
yum -y install httpd-tools
[root@VM-2-14-centos ~]# ab --help
ab: wrong number of arguments
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
-n requests Number of requests to perform ##要执行的请求数
-c concurrency Number of multiple requests to make at a time ##单次发出的并发请求数
-t timelimit Seconds to max. to spend on benchmarking
This implies -n 50000 ##用于测试的最大秒数,等价于 -n 等于50000
-s timeout Seconds to max. wait for each response
Default is 30 seconds ##等待每个响应的最长秒数,默认值为30秒
-b windowsize Size of TCP send/receive buffer, in bytes ##TCP发送/接收缓存区的大小(字节)
-B address Address to bind to when making outgoing connections ##建立传出连接时要绑定的地址
-p postfile File containing data to POST. Remember also to set -T ##包含POST数据的文件。还需要设置-T
-u putfile File containing data to PUT. Remember also to set -T ##包含PUT数据的文件,还需要设置-T
-T content-type Content-type header to use for POST/PUT data, eg.
'application/x-www-form-urlencoded'
Default is 'text/plain' ## 用于POST/PUT数据的内容类型头。
-v verbosity How much troubleshooting info to print ##设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。
-w Print out results in HTML tables 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表
-i Use HEAD instead of GET ##执行HEAD请求,而不是GET
-x attributes String to insert as table attributes ##设置<table>属性的字符串。
-y attributes String to insert as tr attributes ##设置<tr>属性的字符串。
-z attributes String to insert as td or th attributes ##设置<td>属性的字符串。
-C attribute Add cookie, eg. 'Apache=1234'. (repeatable) ##对请求附加一个Cookie行。 其典型形式是name=value的一个参数对。 此参数可以重复。
-H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
Inserted after all normal header lines. (repeatable) ##对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对。
-A attribute Add Basic WWW Authentication, the attributes are a colon separated username and password. ##对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-P attribute Add Basic Proxy Authentication, the attributes are a colon separated username and password. ##对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送
-X proxy:port Proxyserver and port number to use ##对请求使用代理服务器。
-V Print version number and exit ##显示版本号并退出。
-k Use HTTP KeepAlive feature ##启用HTTP KeepAlive功能,即, 在一个HTTP会话中执行多个请求。 默认时,不启用KeepAlive功能。
-d Do not show percentiles served table. ##显示”percentage served within XX [ms] table”的消息(为以前的版本提供支持)。
-S Do not show confidence estimators and warnings. ##不显示中值和标准背离值, 而且在均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为以前的版本提供支持)。
-q Do not show progress when doing more than 150 requests ##如果处理的请求数大于150, ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。 此-q标记可以抑制这些信息。
-l Accept variable document length (use this for dynamic pages) ##接受可变文档长度(用于动态页面)
-g filename Output collected data to gnuplot format file. ##把所有测试结果写入一个’gnuplot’或者TSV (以Tab分隔的)文件。 此文件可以方便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为标题。
-e filename Output CSV file with percentages served ##产生一个以逗号分隔的(CSV)文件, 其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。 由于这种格式已经“二进制化”,所以比’gnuplot’格式更有用。
-r Don't exit on socket receive errors. ##套接字接收错误时不退出。
-m method Method name ##方法名称
-h Display usage information (this message) ##显示使用方法。
-I Disable TLS Server Name Indication (SNI) extension ##禁用TLS服务器名称指示(SNI)扩展
-Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) ##指定SSL/TLS密码套件。
-f protocol Specify SSL/TLS protocol (SSL2, TLS1, TLS1.1, TLS1.2 or ALL) ##指定SSL/TLS协议(SSL2、TLS1、TLS1.1、TLS1.2或ALL)
-E certfile Specify optional client certificate chain and private key ##指定可选的客户端证书链和私钥
开始测试
ab -k -t 10 -s 5 -n 5000 -c 100 http://api.server.cn:8088
-k: 启用 HTTP KeepAlive 功能,允许客户端和服务器在单个连接上发送和接收多个请求。
-t 10: 设置测试运行的时间长度为 10 秒,ab 工具将持续发送请求直到达到指定的时间长度。
-s 5: 设置等待服务器响应的超时时间为 5 秒。如果服务器在 5 秒内未响应,则ab工具将视其为超时。
-n 5000: 指定总共发送的请求数为 5000。在整个测试过程中,ab 工具将发送总共 5000 个请求。
-c 100: 设置并发请求的数量为 100。这表示在任何给定时刻
ab 工具将同时保持 100 个并发连接向服务器发送请求。
通过这个命令对 http://api.cn:8088 这个地址进行压力测试,持续时间为 10 秒,
总共发送 5000 个请求,每次发送 100 个并发请求,
并且启用了 KeepAlive 功能和设置了超时时间为 5 秒。
执行结果
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking api.server.com (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software: nginx/1.20.1 ## nginx版本
Server Hostname: api.cn ##域名或主机地址
Server Port: 8088 ##请求端口号
Document Path: / ##文档路径
Document Length: 171 bytes ## 页面字节数
Concurrency Level: 100 ##请求的并发数
Time taken for tests: 13.189 seconds ##总访问时间
Complete requests: 10000 ##请求成功数量
Failed requests: 1945 ##请求失败数量
(Connect: 0, Receive: 0, Length: 1945, Exceptions: 0)
Non-2xx responses: 1945 ##非2xx响应
Total transferred: 12896992 bytes ##请求总数据大小(包括header头信息)
Total body sent: 3640000
HTML transferred: 6598043 bytes ##HTML页面实际总字节数
Requests per second: 758.21 [#/sec] (mean) ##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量
Time per request: 131.890 [ms] (mean) ##用户平均请求等待时间
Time per request: 1.319 [ms] (mean, across all concurrent requests) ##服务器平均处理时间,也就是服务器吞吐量的倒数
Transfer rate: 954.94 [Kbytes/sec] received ##每秒获取的数据长度
269.52 kb/s sent
1224.46 kb/s total
Connection Times (ms) ##连接时间(ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 10 ##连接时间
Processing: 13 131 91.9 110 791 ##处理时间
Waiting: 12 131 91.9 110 790 ##等待时间
Total: 22 131 91.9 111 791 ##总时间
## 最小值 平均值 中值 最大值
Percentage of the requests served within a certain time (ms)
50% 101 ##50%用户请求在31ms内返回
66% 130 ##66%用户请求在37ms内返回
75% 147 ##75%用户请求在38ms内返回
80% 160 ##80%用户请求在39ms内返回
90% 203 ##90%用户请求在39ms内返回
95% 296 ##95%用户请求在40ms内返回
98% 443 ##98%用户请求在40ms内返回
99% 559 ##99%用户请求在40ms内返回
100% 791 (longest request) ##100%用户请求在40ms内返回
以上就是压力测试工具安装部署使用流程,完工,下班。