使用Ab(ApacheBench) 进行Web性能压力测试

一、Ab(ApacheBench) 简介

Ab(ApacheBench) 测试工具是用于对 Apache 超文本传输​​协议 (HTTP) 服务器进行基准测试的工具。具有对发起负载的本机要求很低,简单易上手的特点。

二、安装

sudo apt install apache2-utils

 

安装成功显示

三、使用方法

3.1 语法

ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -E client-certificate file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTPmethod ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path

3.2 选项

-A auth-username:password 向服务器提供 BASIC 身份验证凭据。用户名和密码由单个分隔并通过:base64 编码发送。无论服务器是否需要,都会发送该字符串(即,已发送需要的 401 身份验证)。
-b windowsize TCP 发送/接收缓冲区的大小,以字节为单位。
-B local-address 进行传出连接时要绑定到的地址。
-c concurrency 一次执行的多个请求的数量。默认为一次一个请求。
-C cookie-name=value Cookie:在请求中添加一行。参数通常采用对的形式 。该字段是可重复的。name=value
-d 不显示“XX [ms] 表内提供的百分比”。(遗留支持)。
-e csv-file 编写一个逗号分隔值 (CSV) 文件,其中包含为每个百分比(从 1% 到 100%)提供服务该百分比请求所花费的时间(以毫秒为单位)。这通常比“gnuplot”文件更有用;因为结果已经“装箱”了。
-E client-certificate-file 连接到 SSL 网站时,使用提供的 PEM 格式的客户端证书向服务器进行身份验证。该文件应包含客户端证书、中间证书和私钥。在 2.4.36 及更高版本中可用。
-f protocol 指定 SSL/TLS 协议(SSL2、SSL3、TLS1、TLS1.1、TLS1.2 或 ALL)。TLS1.1 和 TLS1.2 支持在 2.4.4 及更高版本中可用。
-g gnuplot-file 将所有测量值写为“gnuplot”或 TSV(制表符分隔值)文件。这个文件可以很容易地导入到Gnuplot、IDL、Mathematica、Igor 甚至 Excel 等包中。标签位于文件的第一行。
-h 显示使用信息。
-H custom-header 将额外的标头附加到请求中。参数通常采用有效标题行的形式,包含以冒号分隔的字段值对(即,"Accept-Encoding: zip/zop;8bit")。
-i 做HEAD请求而不是GET.3.3 输出
-k 启用 HTTP KeepAlive 功能,即在一个 HTTP 会话中执行多个请求。默认为没有 KeepAlive。
-l 如果响应的长度不是恒定的,则不要报告错误。这对动态页面很有用。在 2.4.7 及更高版本中可用。
-m HTTP-method 请求的自定义 HTTP 方法。在 2.4.10 及更高版本中可用。
-n requests 为基准测试会话执行的请求数。默认是只执行一个请求,这通常会导致不具代表性的基准测试结果。
-p POST-file 包含要 POST 的数据的文件。记得还要设置-T.
-P proxy-auth-username:password 向代理途中提供 BASIC 身份验证凭据。用户名和密码由单个分隔并通过:base64 编码发送。无论代理是否需要,都会发送字符串(即,已经发送了需要的 407 代理身份验证)。
-q 当处理超过 150 个请求时,每 10% 或 100 个左右的请求ab输出一个进度计数stderr。该 -q标志将抑制这些消息。
-r 不要在套接字接收错误时退出。
-s timeout 套接字超时前等待的最大秒数。默认值为 30 秒。在 2.4.4 及更高版本中可用。
-S 不显示中值和标准差值,当平均值和中值相差超过标准差的一倍或两倍时,也不显示警告/错误消息。并默认为min/avg/max 值。(遗留支持)。
-t timelimit 用于基准测试的最大秒数。这意味着 -n 50000内部。使用它在固定的总时间内对服务器进行基准测试。默认情况下没有时间限制。
-T content-type 用于 POST/PUT 数据的内容类型标头,例如。 application/x-www-form-urlencoded. 默认为text/plain。
-u PUT-file 包含要 PUT 的数据的文件。记得还要设置-T.
-v verbosity 设置详细级别 -4及以上打印标题信息,3以上打印响应代码(404、200 等), 2以上打印警告和信息。
-V 显示版本号并退出。
-w 在 HTML 表格中打印结果。默认表格为两列宽,背景为白色。
-x <table>-attributes 用作属性的字符串<table>。插入属性。<table here >
-X proxy[:port] 对请求使用代理服务器。
-y <tr>-attributes 用作属性的字符串<tr>。
-z <td>-attributes 用作属性的字符串<td>。
-Z ciphersuite 指定 SSL/TLS 密码套件(请参阅 openssl 密码)

四、实例

示例1:get接口可直接访问 10个并发,总1000次请求

ab -n 1000 -c 10 http://localhost:8080/test/list

结果:

示例2:get接口携带登录信息 10个并发,总1000次请求

ab -n 1000 -c 10 -C 'token:adfddsfeefsdfefds' http://localhost:8080/test/list

结果:

示例3:post 接口 10个并发,总100次请求

ab -n 100 -c 10 -T 'application/json;charset=UTF-8' -p json.txt http://localhost:8080/test/save

json.txt 内是post接口请求json

结果:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值