使用Apache ab进行接口压测

压测前固定一些变量:

找一台和线上机器配置相同的机器,部署服务,进行压测之前首先要把tomcat(max-connections:1000;max-threads:1000,account-count:200)、JVM参数调整好,并且要在服务所在的机器就行压线(排除带宽、网速影响),先进行单机的压力测试。

 

压测的目的:

计算出N台相同配置的机器能抗住的用户请求的最大QPS是多少?

N = 用户请求的最大QPS / 接口的QPS

 

压测参照的性能指标有哪些?

压测的时候不断增大线程并发数,观察ReponseTime、CPU IDEL、CPU占用率、内存等指标的变化

查看进程信息命令: (top -p 进程ID)。 

最大线程并发数要小于Tomcat的 (max-connections + accept-count),否则ab会报错

apr_socket_recv: Connection timed out(110)

接口响应时间 , 接口响应时间首先要一个心理预期,压测的时候接口QPS上去了,但是ReponseTime太高也是不能接收的

接口QPS = (1000ms / 接口响应时间ms ) * 线程并发数

线程并发数越大,接口响应时间越长(线程切换和调度)

 

b5ff575374738a0bb20a3e66ba35f357929.jpg

800并发的情况下,进行了8000次接口请求,接口的平均响应时间是656.435ms,接口QPS 1218.70。

压测结果说明:

Requests per second : 1218.70,这个变量其实就是接口的QPS

Time per Request :656.435ms  在进行压测的过程中接口的平均响应时间。

(Requests per second ) = (1000ms / Time per Request ) * (Currency Level)

ab -n 8000 -c 800 -p aaa.bin -T application/octet-stream 'http://10.9.146.211:9386/horadric/api/logcollection/event/add'

随着并发数的增加,QPS呈现的是一个拱形的曲线,峰值就是我们要的接口的最大QPS。

响应时间与并发数正相关.(图标中展示的是 响应时间*10 ms)

 

 

CURL测试接口的响应时间(秒):

curl  -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" -d  "param1=value1&param2=value2" "http://127.0.0.1:8081/detail"

 

curl  -o /dev/null -s -w %{time_total}::"\n" "http://127.0.0.1:8081/detail"

 

转载于:https://my.oschina.net/u/4129361/blog/3056158

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值