本文最后更新于42 天前,其中的信息可能已经过时,如有错误请发送邮件到xbenjaminx@qq.com
前言
在我们完成云服务器或本地Web服务部署后通常需要进行压力测试,以此了解我们服务器能够承受的请求量和并发量的上限是多少。本篇文章会讲解AB(Apache Benchmark)测试工具的基本安装以及配合btop监视系统资源使用情况。
AB测试工具安装与使用
安装
# ubuntu | debian安装方式
sudo apt update
sudo apt install -y apache2-utils
使用
# 按照下面方式输入命令执行压力测试
# -n 请求总数(避免服务器第一次测试直接宕机,可以调小点再慢慢加)
# -c 并发量
# 末尾加上需要压力测试的目标地址
# 这里我的目标地址是本地192.168.5.101这台主机上的服务(地址末尾"/"不要掉)
ab -n 100000 -c 100 http://192.168.5.101/
当完成压力测试后,控制台会输出本次测试结果,我们主要关注部分是这些:
Server Software: nginx/1.26.3
Server Hostname: 192.168.5.101
Server Port: 80
Document Path: / # 请求路径
Document Length: 268 bytes # 请求的页面长度
Concurrency Level: 100 # 并发量
Time taken for tests: 2.718 seconds # 本次测试的耗时
Complete requests: 100000 # 总请求量
Failed requests: 0 # 压力测试失败请求量
Total transferred: 50100000 bytes # 总共传输数据量
HTML transferred: 26800000 bytes # HTML传输数据量
Requests per second: 36790.89 [#/sec] (mean) # QPS(请求量/秒)
Time per request: 2.718 [ms] (mean)
# 每次请求平均耗时:由每个请求耗时相加再除以总数得到的平均值
Time per request: 0.027 [ms] (mean, across all concurrent requests)
# 每次请求平均耗时:由所有(并发)请求总耗时除以总数得到的平均值
# 举例:10个并发请求耗时都是50ms,但由于是并发,所有请求完成总耗时是100ms,于是拿总耗时的100ms除以总数10
Transfer rate: 18000.23 [Kbytes/sec] received # 传输速率(kb/s)
根据上面的一些测试数据我们基本对服务器性能有了基本了解,但这样测试仍不太直观,我们不太方便看到测试时服务器cpu、内存、网络等系统基本情况,需要多轮AB测试才能摸清服务器的上限,于是我们就可以配合btop更清楚的了解压力测试时服务器的情况。
btop安装与使用
btop是一个实时监视进程和Linux性能的终端可视化工具。能够在终端显示当前Linux cpu、内存、磁盘读写、网络以及系统进程等信息。
安装
# ubuntu | debian安装方式
sudo apt btop
使用
sudo btop
演示
我现在在本地创建两台Ubuntu虚拟机,192.168.5.100作为我们安装ab测试工具的主机,192.168.5.101模拟我们网站服务器并安装btop。我现在在192.168.5.100终端输入下面命令开始AB测试,向我的192.168.5.101服务器主机发出90万次请求,并发量500。
ab -n 900000 -c 500 http://192.168.5.101/
这里我们能在192.168.5.101的终端执行【 sudo btop 】打开btop的界面,我们可以很直观清楚地看到压力测试时cpu的波动、cpu的利用率、cpu各个核心利用率以及网络波动情况。
再结合AB测试工具的测试结果我们就能更详细的了解服务器端的性能上限: