CentOS 上 ab 简单使用

缘由

线上有个接口客户端调用时,最近经常出现超时现象,看了下调用日志,发现接收是及时的,但是这个接口在转发时好像发生了堆积,以致返回数据时间超过了客户端的 10秒 阈值而导致超时。于是打算在 beta 环境压测下,看看能否复现

安装

yum -y install httpd-tools

压测

由于接口是 POST 请求,于是写了个文件 param.txt 把请求参数放进去

param1=1&param2=2&param3=3

同时简单介绍下常用的参数

-n:执行的请求个数,默认时执行一个请求
-c:一次产生的请求个数,即并发个数
-p: 模拟 POST 请求,文件格式为 param1=1&param2=2,配合 -T 使用
-T:POST 数据所使用的 Content-Type 头信息,如 -T application/x-www-form-urlencoded

开始压测

ab -n 10000 -c 100 -p param.txt -T application/x-www-form-urlencoded http://192.168.1.1:8801/v1/audit/out

结果

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.1.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        
Server Hostname:        192.168.1.1
Server Port:            8801

Document Path:          /v1/audit/out
Document Length:        93 bytes

Concurrency Level:      100   ------> 并发用户数
Time taken for tests:   95.386 seconds ------> 总请求时间
Complete requests:      10000   ------> 总请求数
Failed requests:        1878   ------> 失败的请求数
   (Connect: 0, Receive: 0, Length: 1878, Exceptions: 0)
Write errors:           0
Total transferred:      3881878 bytes
Total POSTed:           3130000
HTML transferred:       931878 bytes
Requests per second:    104.84 [#/sec] (mean)   ------> 平均每秒的请求数
Time per request:       953.862 [ms] (mean) ------> 平均每个请求消耗的时间
Time per request:       9.539 [ms] (mean, across all concurrent requests) ------> 服务器平均处理时间,也就是服务器吞吐量的倒数
Transfer rate:          39.74 [Kbytes/sec] received 
                        32.04 kb/s sent
                        71.79 kb/s total   ------> 传输速率

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       8
Processing:    51  950 121.9    936    1557
Waiting:       43  950 121.9    935    1556
Total:         51  950 121.9    936    1558

Percentage of the requests served within a certain time (ms)
  50%    936 ------> 50% 的请求都在 936ms 内完成
  66%    978
  75%   1010
  80%   1039
  90%   1130
  95%   1180
  98%   1234
  99%   1263
 100%   1558 (longest request)

性能指标

吞吐率(Requests per second)

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

记住:吞吐率是基于并发用户数的。这句话代表了两个含义:

a、吞吐率和并发用户数相关

b、不同的并发用户数下,吞吐率一般是不同的

计算公式:总请求数/处理完成这些请求数所花费的时间,即

Request per second = Complete requests / Time taken for tests

必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。

10000 / 95.386 = 104.8371878472732 reqs/s
并发连接数(The number of concurrent connections)

某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

并发用户数(The number of concurrent users,Concurrency Level)

要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。

用户平均请求等待时间(Time per request)

计算公式:总请求时间 / (总请求数 / 并发用户数),即 Request per second = Time taken for tests / (Complete requests / Concurrency Level)

95.386 * 1000 / (10000 / 100) = 953.86 ms
服务器平均请求等待时间(Time per request: across all concurrent requests)

计算公式:处理完成所有请求数所花费的时间 / 总请求数,即 Time taken for tests / Complete requests
可以看到,它是吞吐率的倒数。同时,它也等于 用户平均请求等待时间/并发用户数,即 Time per request / Concurrency Level

953.862 / 100 = 9.53862 ms
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值