网站压测工具Apache-ab,webbench,Apache-Jemeter

1、搭建测试网站

编译LAMP网站部署:LAMP
web1配置:
yum方式搭建网站

初始化
cd /etc/yum.repos.d/
yum install -y wget
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
yum clean all
yum makecache
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

yum方式搭建PHP网站用于压测
yum -y install httpd php php-mysqlnd php-gd
vi /var/www/html/index.php
<?php
phpinfo();
?>

修改系统文件配置
vi /etc/security/limits.conf   最底部添加
#修改文件打开限制
*                soft    core            unlimited
*                hard    core            unlimited
*                soft    nproc           1000000
*                hard    nproc           1000000
*                soft    nofile          1000000
*                hard    nofile          1000000
*                soft    memlock         32000
*                hard    memlock         32000
*                soft    msgqueue        8192000
*                hard    msgqueue        8192000

重启设备,让系统配置生效
ulimit -n    查看limit配置是否生效

systemctl start httpd
systemctl enable httpd
查看web1的硬件配置
#查看CPU个数
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
#查看CPU总线程数
cat /proc/cpuinfo |grep "processor"|sort|uniq|wc -l
#查看内存
free -h
#查看硬盘
lsblk |egrep "^sd[a-z]"

在这里插入图片描述
web2跟上面一样搭建网站,做系统配置

查看web2的硬件配置
#查看CPU个数
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
#查看CPU总线程数
cat /proc/cpuinfo |grep "processor"|sort|uniq|wc -l
#查看内存
free -h
#查看硬盘
lsblk |egrep "^sd[a-z]"

在这里插入图片描述

2、Apache自带工具ab

ab是Apache自带的压力测试工具。它可以对apache服务器进行网站访问压力测试,生成详细的网站测试信息,从而帮助开发者优化网站。

在压测设备上测试web1

yum install -y httpd-tools
ab -c 100 -n 2000 -k http://192.168.116.133/index.php

-c  指定并发数
-n  指定总共请求数
-k  以持久性连接测试

Server Software:        Apache/2.4.6       #httpd的版本
Server Hostname:        192.168.116.133    #主机IP
Server Port:            80                 #主机端口

Document Path:          /index.php         #网页文件名字
Document Length:        61877 bytes        #网页文件大小

Concurrency Level:      100                #并发量
Time taken for tests:   2.566 seconds      #测试总共时间
Complete requests:      2000               #请求总数量
Failed requests:        203                #失败的请求数
   (Connect: 0, Receive: 0, Length: 203, Exceptions: 0)
Write errors:           0                  #写入错误
Keep-Alive requests:    0                  #保持请求连接数
Total transferred:      124119771 bytes   #全部请求大小
HTML transferred:       123753771 bytes    #HTML请求大小

#主要看这几个数值
Requests per second:    779.47 [#/sec] (mean)  #每秒处理请求个数
Time per request:       128.293 [ms] (mean)    #每秒请求时间
#并发平均请求时间
Time per request:       1.283 [ms] (mean, across all concurrent requests)
#传输速率
Transfer rate:          47239.93 [Kbytes/sec] received

#连接时间
Connection Times (ms)
             最小值    平均值    中位数    最大值
              min  mean[+/-sd] median   max
#连接时间
Connect:        0    1   1.5      0       9
#数据处理时间
Processing:     6  124  22.5    124     625
#等待时间
Waiting:        2  123  19.5    123     187
#全部时间
Total:         15  125  21.7    125     626

Percentage of the requests served within a certain time (ms)
  50%    125
  66%    127
  75%    128
  80%    128
  90%    135
  95%    159
  98%    183
  99%    187
 100%    626 (longest request)

在压测设备上测试web2

yum install -y httpd-tools

ab -c 100 -n 2000 -k http://192.168.116.134/index.php

Server Software:        Apache/2.4.6
Server Hostname:        192.168.116.134
Server Port:            80

Document Path:          /index.php
Document Length:        61877 bytes

Concurrency Level:      100
Time taken for tests:   0.898 seconds
Complete requests:      2000
Failed requests:        198
   (Connect: 0, Receive: 0, Length: 198, Exceptions: 0)
Write errors:           0
Keep-Alive requests:    0
Total transferred:      124119797 bytes
HTML transferred:       123753797 bytes
Requests per second:    2227.90 [#/sec] (mean)
Time per request:       44.885 [ms] (mean)
Time per request:       0.449 [ms] (mean, across all concurrent requests)
Transfer rate:          135022.76 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   1.6      1       8
Processing:     8   42   5.3     42      56
Waiting:        3   40   5.3     40      53
Total:         16   44   4.6     43      58

Percentage of the requests served within a certain time (ms)
  50%     43
  66%     45
  75%     46
  80%     47
  90%     49
  95%     50
  98%     53
  99%     54
 100%     58 (longest request)

web1的主要数值

这个数值一般为0是最好的
Failed requests:        203                #失败的请求数
   (Connect: 0, Receive: 0, Length: 203, Exceptions: 0)

性能差的设备每秒处理请求较低
Requests per second:    779.47 [#/sec] (mean)  #每秒处理请求个数

性能差的设备时间延迟都较高
Time per request:       128.293 [ms] (mean)    #每秒请求时间
#并发平均请求时间
Time per request:       1.283 [ms] (mean, across all concurrent requests)

性能差的设备传输速率较低
#传输速率
Transfer rate:          47239.93 [Kbytes/sec] received

web2的主要数值

这个数值一般为0是最好的
Failed requests:        198
   (Connect: 0, Receive: 0, Length: 198, Exceptions: 0)

性能好的设备每秒处理请求较高
Requests per second:    2227.90 [#/sec] (mean)

性能好的设备时间延迟都较低
Time per request:       44.885 [ms] (mean)
Time per request:       0.449 [ms] (mean, across all concurrent requests)

性能好的设备传输速率较高
Transfer rate:          135022.76 [Kbytes/sec] received

3、webbench

webbench:Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。

GitHub代码:webbench源码
webbench官网:webbench
在压测设备编译安装webbench

yum install -y gcc ctags
wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
tar xf webbench-1.5.tar.gz
mkdir -m 644 -p /usr/local/webbench/man/man1  创建安装目录 
cd webbench-1.5
make     开始编译
#出现下面这个警告忽略即可
cc -Wall -ggdb -W -O   -c -o webbench.o webbench.c
webbench.c: 在函数‘alarm_handler’中:
webbench.c:77:31: 警告:未使用的参数‘signal’ [-Wunused-parameter]
 static void alarm_handler(int signal)
                               ^
cc -Wall -ggdb -W -O  -o webbench webbench.o  
ctags *.c

make install PREFIX=/usr/local/webbench
cp webbench /usr/bin/

命令行选项:
短参	长参数	作用
-f	--force	    不需要等待服务器响应
-r	--reload	发送重新加载请求
-t	--time	    运行多长时间,单位:秒"
-p	--proxy server:port	使用代理服务器来发送请求
-c	--clients	创建多少个客户端,默认1个"
-9	--http09	使用 HTTP/0.9
-1	--http10	使用 HTTP/1.0 协议
-2	--http11	使用 HTTP/1.1 协议
--get	        使用 GET请求方法
--head	        使用 HEAD请求方法
--options	    使用 OPTIONS请求方法
--trace	         使用 TRACE请求方法
-?/-h	--help	打印帮助信息
-V	--version	显示版本号

测试2个网站的性能

测试web1
webbench -c 1000 -t 10 http://192.168.116.133/index.php

可以看到当并发为1000时,每分钟响应请求数38040个,每秒钟传输数据量38634276字节
Speed=38040 pages/min, 38634276 bytes/sec.

总共请求数量为6340个
Requests: 6340 susceed, 0 failed.

测试web2,可以看到几个数值都比web1好很多
webbench -c 1000 -t 10 http://192.168.116.134/index.php

可以看到当并发为1000时,每分钟响应请求数84474个,每秒钟传输数据量85981248字节
Speed=84474 pages/min, 85981248 bytes/sec.

总共请求数量为14079个
Requests: 14079 susceed, 0 failed.

4、Windows下安装Apache-Jmeter

Apache JMeter 可用于测试静态和动态资源、Web 动态应用程序的性能。
它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。

jmeter需要java环境,所以需要安装java
下载java:Windows-java8,然后直接打开安装
在这里插入图片描述
全部选择默认和下一步即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
右键此电脑点击属性
在这里插入图片描述
选择高级系统设置
在这里插入图片描述
选择环境变量
在这里插入图片描述
选择新建系统变量
在这里插入图片描述
输入java的安装目录,设置为变量

变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_181

在这里插入图片描述
然后再新建classpath变量

classpath
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

在这里插入图片描述
最后在系统变量找到Path,点击编辑,修改Path变量
在这里插入图片描述
新建多一个java路径
在这里插入图片描述
在Path添加

%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

在这里插入图片描述
在这里插入图片描述
最后重启下系统,让变量生效。
重启后打开CMD,查看能否识别到java
在这里插入图片描述
在这里插入图片描述
安装Jmeter
下载软件包:jmeter-5.2.1
将安装包解压后放在C盘

新建系统变量
创建jmeter的路径变量

JMETER_HOME
C:\apache-jmeter-5.2.1

在这里插入图片描述
修改classpath变量值

改为下面这样
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar

在这里插入图片描述
双击脚本运行jmeter
C:\apache-jmeter-5.2.1\bin\jmeter.bat

更改为中文
在这里插入图片描述
测试web1
在TestPlan右键选择添加线程组
在这里插入图片描述
设置线程数(相当于请求数),Ramp-Up(总共请求时间),不用保存,直接下一步
在这里插入图片描述
然后右键web1线程组
在这里插入图片描述
输入网址信息
在这里插入图片描述
再次右键web1线程组,添加汇总报告
在这里插入图片描述
点击运行
在这里插入图片描述
提示是否保存这次操作计划,直接选择no即可
在这里插入图片描述
稍等一下,就可以看到web1网站测试结果
可以看到异常为16.76%,吞吐量为220.6/sec
一般情况下,异常值越小越好,吞吐量越大越好,可以看到web1的性能比web2差
在这里插入图片描述
按照上面操作添加web2进行测试,查看结果
可以看到异常为19.84%,吞吐量为389.9/sec
一般情况下,异常值越小越好,吞吐量越大越好,可以看到web2的性能比web1好
在这里插入图片描述


原文连接:https://blog.csdn.net/DLWH_HWLD/article/details/124276103

相关推荐

国产API管理神器Apifox全面提升开发效率

窥探性能的接口测试工具,性能优化的开端

100天精通Python——第47天:selenium自动化操作浏览器

忘掉Postman,Apifox更好用

【C语言】VS编辑器实用的调试技巧

超越Postman,新一代国产调试工具Apifox,用起来够优雅

功能强大的国产Api管理工具

全栈开发提效神器——ApiFox(Postman + Swagger + Mock + JMeter)

Postman如何设置成中文?(汉化)

自动化测试平台(十三):接口自动化框架与平台对比及应用场景分析及设计思路分享

难怪大家丢掉了postman而选择 Apifox

如何写好测试用例以及go单元测试工具testify简单介绍

外包干了四年,人直接废了。。。

渗透测试工具Kali Linux安装与使用

Go 单元测试工具 gomonkey

2022全网最全最细的jmeter接口测试教程以及接口测试流程详解 — JMeter插件管理

前端后端的爱恨情仇

Python自动化测试小程序编程:Selenium库使用

如何使用postman做接口测试(菜鸟级攻略)

测试工具(2)APP加密算法思路