使用Apache ab进行接口压测

压测前固定一些变量:

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

 

压测的目的:

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

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

 

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

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

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

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

apr_socket_recv: Connection timed out(110)

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

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

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

 

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

压测结果说明:

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"

相关文章
相关标签/搜索