项目性能测试报告
01-测试目的
主要是让开发者对hero_mall项目的性能负载和容量有个准确的认知。同时,协助技术管理者更好的管理业务系统性能质量,科学评估业务系统的负荷,拒绝盲目上线。
02-测试工具
(图略)
03-测试环境
3.1 环境
指标 | 参数 |
---|---|
机器 | 4C8G |
集群规模 | 单机 |
hero_mall_one版本 | 1.0 |
数据库 | 4C8G |
3.1 设置启动参数
export JAVA_HOME
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export SERVER_NAME="hero_web"
export JAVA="$JAVA_HOME/bin/java"
export BASE_DIR=`cd $(dirname $0)/.; pwd`
export DEFAULT_SEARCH_LOCATIONS="classpath:/,classpath:/config/,file:./,file:./config/"
export CUSTOM_SEARCH_LOCATIONS=${DEFAULT_SEARCH_LOCATIONS},file:${BASE_DIR}/conf/
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/${SERVER_NAME}*.jar"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} --spring.config.location=${CUSTOM_SEARCH_LOCATIONS}"
if [ ! -d "${BASE_DIR}/logs" ]; then
mkdir ${BASE_DIR}/logs
fi
echo "$JAVA ${JAVA_OPT}"
if [ ! -f "${BASE_DIR}/logs/${SERVER_NAME}.out" ]; then
touch "${BASE_DIR}/logs/${SERVER_NAME}.out"
fi
echo "$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/${SERVER_NAME}.out 2>&1 &
nohup $JAVA ${JAVA_OPT} hero_web.hero_web >> ${BASE_DIR}/logs/${SERVER_NAME}.out 2>&1 &
echo "server is starting,you can check the ${BASE_DIR}/logs/${SERVER_NAME}.out"
04-测试场景
测试场景一般情况下是都是最重要接口:验证hero_mall服务获取商品信息接口在不同并发规模的表现
情况01-模拟低延时场景,用户访问接口并发逐渐增加的过程。接口的响应时间为20ms,线程梯度:5、10、15、20、25、30、35、40个线程,5000次;
- 时间设置:Ramp-up period(inseconds)的值设为对应线程数
- 测试总时长:约等于20ms x 5000次 x 8 = 800s = 13分
情况02-模拟高延时场景,用户访问接口并发逐渐增加的过程。接口的响应时间为500ms,线程梯度:100、200、300、400、500、600、700、800个线程,200次;
- 时间设置:Ramp-up period(inseconds)的值设为对应线程数的1/10;
- 测试总时长:约等于500ms x 200次 x 8 = 800s = 13分
05-核心接口的测试结果
一、商品详情页涉及到的接口
1、获取商品信息接口
验证hero_mall服务获取商品信息接口能力性能。目标峰值TPS:10000,P99响应时间:300ms
Active Threads:注意压力机的活动线程数并不等同于在线用数中,并发的用户数。压力活动线程数是用来模拟用户发出并发请求的操作。
- 压力机-活动线程数 =模拟=> 系统并发用户数
- 系统并发用户数 =不等于=> 压力机-活动线程数
TPS、RT
聚合报告(图略)
JMeterDashboard(图略)
二、支付详情页涉及到的接口
1、公众号静默授权获取静默授权地址(get)
目标峰值TPS:5000、P99响应时间:300ms
地址: https://open2.hero.com/wechat/open/redirect/url
(图略)
公众号静默授权获取静默授权地址 http://yapi.hero.com/project/582/interface/api/35768
2、静默授权获取openid(get)
目标峰值TPS:10000、P99响应时间:300ms
地址:https://open2.hero.com/wechat/open/authorize?code=${params.code}&state=kkb&appId=appid
授权获取用户信息 http://yapi.hero.com/project/582/interface/api/35782
3、创建订单接口
目标峰值TPS:5000、P99响应时间:300ms
地址:https://open2.hero.comvipcourse/order
4、统一支付接口
目标峰值TPS:2666、P99响应时间:300ms
地址:https://open2.hero.com/vip/payorder/params.openid/{params.openid}/params.openid/{params.orderNo}/params.payType{params.payType}params.payType{userId}${emi}
获取支付链接(创建支付流水) http://yapi.hero.com/project/61/interface/api/4007
5、订单查询(详情)接口
目标峰值TPS:36048,P99响应时间:300ms
地址:https://open2.hero.comvipcourse/order/{orderNo}
三、新MOS核心API压测
略
四、红包接口压测
略
06-测试结论
hero_web性能测试是针对重点功能,单机单节点服务进行压测,可以看到各个接口容量。本测试供给大家作为参考,如有不足或偏差,请指正!如果对性能有其他需求,可以进行集群扩容。例如:3节点、10节点、100节点…