概述
缘由
线上有个接口客户端调用时,最近经常出现超时现象,看了下调用日志,发现接收是及时的,但是这个接口在转发时好像发生了堆积,以致返回数据时间超过了客户端的 10秒
阈值而导致超时。于是打算在 beta
环境压测下,看看能否复现
安装
yum -y install httpd-tools
压测
由于接口是 POST
请求,于是写了个文件 param.txt
把请求参数放进去
param1=1¶m2=2¶m3=3
同时简单介绍下常用的参数
-n:执行的请求个数,默认时执行一个请求
-c:一次产生的请求个数,即并发个数
-p: 模拟 POST 请求,文件格式为 param1=1¶m2=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
最后
以上就是繁荣摩托为你收集整理的CentOS 上 ab 简单使用的全部内容,希望文章能够帮你解决CentOS 上 ab 简单使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复