一次简单的压测

对http服务关键接口压测

对测试环境http服务中关键接口压测
以下测试数据为测试环境数据、非生产环境真实数据

压测目标

测试环境单点resin 单点dubbo mongoDB
以订单列表接口为压测对象

压测工具

siege 2.7.0

测试用例

${thread_num}       线程并发访问数量
${request_num}     每个线程请求接口次数

thread_num   200 400 600 800 1000 1200 1400 1600 1800 2000
request_num 50

siege -c ${thread_num} -r ${request_num} --log=/data/test_data/data.txt --header "${header}" orderlist

QPS

可以看出当并发达到1600时候,qps达到峰值2113.之后随着并发的增加,qps逐渐降低

并且出现siege aborted due to excessive socket failure,该问题是建立tcp过程中无法拿到临时端口导致无法建立链接

查看uc-rest测试机tcp链接状态

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

TIME_WAIT 11186

CLOSE_WAIT 9

ESTABLISHED 108

大量TIME_WAIT 链接未释放,占用临时端口,新请求无法建立

响应率

在并发1600,响应率瞬间降低至80%,大量未来响应请求出现

响应时间

响应时间在并发1200之后开始剧增