ab压力测试

Apache Bench安装与使用

Apache Bench简介

ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。

安装

windows下安装

下载地址:https://www.apachelounge.com/...

以管理员身份运行cmd,命令行进入到Apache的bin目录,输入 httpd -k install 完成安装。在apache的bin目录下测试。

#### 修改Apache 端口

​ 如果是windows部署,多数情况下80端口已经被iis占用了,这时候需要修改conf/httpd.conf 找到listen 80 改为你要设置的端口,如: 8090

Ubuntu下安装

 sudo apt-get install apache2-utils

Apache Bench使用

格式:ab [options] [http://]hostname[:port]/path
参数很多,一般我们用 -c 和 -n 参数就可以了
ab -n 1000 -c 100 https://www.baidu.com/  #注意这里最后的斜杠一定要加

-n 表示测试请求数目
-c 表示并发度
-t timelimit  测试时间限制,单位秒
-s timeout    每个请求时间限制,单位秒 
-v verbosity  日志输出级别,可以选择1, 2等,调试使用 
-T content-type  POST/PUT接口的content-type 
-p postfile      POST请求发送的数据文件

结果分析

Concurrency Level: 1000 并发度
Time taken for tests: 1.190 seconds 总时间, 处理1000个并发请求总共花了1.19秒,
Complete requests: 1000 完成的请求数量
Failed requests: 0 失败次数
Write errors: 0 Non-2xx
responses: 1000 响应了1000次
Total transferred: 164000 bytes 总共传输了多少流量 HTML
transferred: 0 bytes 传递了多少字节
Requests per second: 840.58 [#/sec] (mean) QPS, 每秒完成的请求数目 , 是系统最重要的指标
Time per request: 1189.651 [ms] (mean) 每组请求用时
Time per request: 1.190 [ms] (mean, across all concurrent requests) 每个请求实际运行时间的平均值 ms是毫秒
Transfer rate: 134.62 [Kbytes/sec] received 传输速率 可以帮助排除是否存在网络流量过大导致响应时间延长的问题

测试POST请求

​ 以x-www-form-urlencoded形式发送

ab -n 1000 -c 100 -p post.txt -T 'application/x-www-form-urlencoded' http://www.test.com/test/api

注: post.txt文件内容: name=hello,world

以multipart/form-data形式发送

ab -n 1000 -c 100 -p post.txt -T 'multipart/form-data; boundary=--WebKitFormBoundaryE19zNvXGzXaLvS5C' http://www.test.com/test/api

总结

吞吐率(Requests per second),缩写RPS,是服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大的请求数,称之为最大吞吐率。

性能测试得到的最重要的指标就是QPS(Query per second),每秒查询率,qps相当于最大吞吐率。反映了接口的并发承受能力,也就是系统的峰值性能。如果对接口的调用超过了这一限制,就要考虑提升硬件或者做一些优化了。

阅读 2.6k

推荐阅读
目录