压力测试之Apache ab

一 压力测试的概念

  • 吞吐率(Requests per second)
    概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
    计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
    Request per second = Complete requests / Time taken for tests

  • 并发连接数(The number of concurrent connections)
    概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

  • 并发用户数(The number of concurrent users,Concurrency Level)
    概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。

  • 用户平均请求等待时间(Time per request)
    计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
    Time per request = Time taken for tests /( Complete requests / Concurrency Level)

  • 服务器平均请求等待时间(Time per request: across all concurrent requests)
    计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
    Time taken for / testsComplete requests
    可以看到,它是吞吐率的倒数。
    同时,它也=用户平均请求等待时间/并发用户数,即
    Time per request / Concurrency Level

测试工具有Apache ab ,jmeter 等 这里 说一说Apache ab

二 Apache ab

1. 安装

linux直接yum -y install httpd-tools,然后ab -V测试
windows:

  1. 下载并安装
    https://www.apachehaus.com/cgi-bin/download.plx

  2. 查看80 443 端口有没有被占用,然后kill掉
    netstat -ano | findstr “80”
    netstat -aon|findstr “443”
    tasklist |findstr “进程id”
    taskkill /f /t /im “进程id”(用管理员)

    注意,要用管理员才能杀掉。。。

  3. 修改配置文件
    找到安装目录下的httpd.conf

修改为自己的安装目录在这里插入图片描述

  1. 让apache服务器以windows服务的方式运行
    进入 bin目录下 cmd 然后 httpd.exe 就可以了
    如果启动报下面这个错误,是因为配置文件问题,需要参照第三步修改在这里插入图片描述
  2. 访问localhost,就可以看到页面
    在这里插入图片描述
2.ab -help参数解释

-n即requests,用于指定压力测试总共的执行次数。
-c即concurrency,用于指定压力测试的并发数。
-t即timelimit,等待响应的最大时间(单位:秒)。
-b即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v即verbosity,指定打印帮助信息的冗余级别。
-w以HTML表格形式打印结果。
-i使用HEAD请求代替GET请求。
-x插入字符串作为table标签的属性。
-y插入字符串作为tr标签的属性。
-z插入字符串作为td标签的属性。
-C添加cookie信息,例如:“Apache=1234”(可以重复该参数选项以添加多个)。
-H添加任意的请求头,例如:“Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X指定使用的代理服务器和端口号,例如:“126.10.10.3:88”。
-V打印版本号并退出。
-k使用HTTP的KeepAlive特性。
-d不显示百分比。
-S不显示预估和警告信息。
-g输出结果信息到gnuplot格式的文件中。
-e输出结果信息到CSV格式的文件中。
-r指定接收到错误信息时不退出程序。
-h显示用法信息,其实就是ab -help。

3. 测试实例

进入bin目录 cmd
输入:ab -n 1000 -c 500 http://localhost:8080/incr

在这里插入图片描述
测试结果指标说明(常用的)

  • Concurrency Level 并发数多少,等于-c后面的数值
  • Time taken for tests 测试总耗时
  • Complete requests 成功收到返回的数目
  • Failed requests 请求失败数目,可能因为网络连接,异常,请求数据长度等等
  • Non-2xx responses 表示返回的HTTP status code不是2xx的数目(比如404,401,500…),如果都是2xx,这个指标不显示在结果里面
  • Requests per second 每秒请求数,等于总请求数/测试总耗时
  • Time per request 每一个请求平均花费时间。第一个Time per request等于concurrency * timetaken * 1000 / done,第二个Time per request(mean, across all concurrency requests)等于timetaken * 1000 / done,第一个可以理解为用户平均请求等待时间,第二可以理解为服务器平均请求等待时间

Jmeter 我这里就不多介绍了
参考我这篇文章:
https://blog.csdn.net/sdaujsj1/article/details/95974796

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值