使用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"

相關文章
相關標籤/搜索