前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >压力测试之Apache ab

压力测试之Apache ab

作者头像
周杰伦本人
发布2022-10-25 15:41:54
7640
发布2022-10-25 15:41:54
举报
文章被收录于专栏:同步文章同步文章

一 压力测试的概念

  • 吞吐率(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 就可以了 如果启动报下面这个错误,是因为配置文件问题,需要参照第三步修改
  1. 访问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://cloud.tencent.com/developer/article/2139472

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 压力测试的概念
  • 二 Apache ab
    • 1. 安装
      • 2.ab -help参数解释
        • 3. 测试实例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档