项目性能测试报告-练习版(无操作步骤,仅有结果)

01-测试目的

练习Jmeter使用、学习性能分析、掌握压力测试基本能力、评估系统承受能力和分析系统瓶颈。

02-测试工具

共计4台 4C8G服务器,采用计量付费实例。
在这里插入图片描述

03-测试环境

3.1 环境

指标参数
机器4C8G
集群规模单机
Application-Version1.0
数据库4C8G

3.2 设置启动参数

export JAVA_HOME
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export SERVER_NAME="application"
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} application.application>> ${BASE_DIR}/logs/${SERVER_NAME}.out 2>&1 &
echo "server is starting,you can check the ${BASE_DIR}/logs/${SERVER_NAME}.out"

04-测试场景

测试场景一般情况下是都是最重要接口:验证应用服务获取商品信息接口在不同并发规模的表现

情况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-接口测试结果

情况01测试结果:
Jmeter测试结果报告,图1: 可以看到右侧线程数虽然在逐渐攀升,但是左侧的每秒通过没能稳定提高.
在这里插入图片描述
Jmeter测试结果,图2:可以看到随着线程增加,响应时间也逐渐增加,15-20 Thread的时候基本响应量达到顶峰,在35-40的时候甚至略有下降,99百分位的结果也接近于60ms。
在这里插入图片描述Jmeter测试结果报告,图3: 响应结果可视化在这里插入图片描述
主要查看应用服务器的状态:
CPU\内存\磁盘总体情况:
在这里插入图片描述
CPU使用率: 低延时场景下CPU占用率较高,但是尚未触顶,CPU可能产生了一定影响,但是应该不是瓶颈。
在这里插入图片描述
内存信息: 内存一直很低,不构成性能阻碍。
在这里插入图片描述
网络带宽情况: 服务器压测采用的是阿里云内网,理论上距离限制较远,但是该值接近于配置的公网峰值。(可以理解为,在公网情况下,超出此压力的请求将会受到公网带宽影响。
在这里插入图片描述
系统负载变化: CPU 1分钟负载抖动上升,基本高于5,5分钟负载缓慢爬升至4,15分钟负载缓慢至2,说明存在一定的CPU拥塞,但是尚未进入严重情况。
在这里插入图片描述
磁盘变化情况: 磁盘状态良好
在这里插入图片描述
网络IO情况: 网络状态较为稳定。
在这里插入图片描述
情况2测试结果:

Jmeter测试结果报告,图1: 可以看到右侧线程数虽然在逐渐攀升,但是左侧的每秒通过没能稳定提高.可以看到,在200线程以后,吞吐量就不再提高,可以推测是Tomcat设置的默认线程原因(时间问题没能进行800线程对比试验),可以参考服务器状态进行验证。
在这里插入图片描述

Jmeter测试结果报告,图2: 数据可视化
在这里插入图片描述
应用服务器总览:
CPU、内存、硬盘检视:可以看到,除了硬盘意外,其他压力均低于低延时情况。
在这里插入图片描述
CPU使用率:远低于低延时情况,CPU利用率20左右,状态极为良好。
在这里插入图片描述
内存占用率:与低延时情况相差不大。
在这里插入图片描述
网络带宽:相比低延时情况下压力极低。
在这里插入图片描述
系统负载:负载稳定,长期维持1,1,1情况。
在这里插入图片描述
磁盘情况:
在这里插入图片描述
Socket信息:可以看到Socket随着压测方线程数增加而增加,所以可以断定链接是有效的,但是没能被正确的处理掉,导致了其他资源空转而处理缓慢的情况。
在这里插入图片描述

情况分析

1.低延时下压力可能位于 CPU 负载,其次位于带宽,4C8G 25M 的服务器,其中最逼近极限的是服务器带宽,其次是应用端的 Cpu 压力,60%的负载以及上下文切换的开销使得线程数在 20 左右逼近吞吐量的最高峰。

2.高延时下虽然可以分析出压力来自于 Tomcat 的默认线程数,但是同时也应该考虑到此时的高延时来自于人工处理,在真实情况下的高延时情况可能更加复杂。

06-结论

这是针对一个简单的 JAVA-Web 项目进行的压测,主要是学习其基本操作和性能分析问题。通过部署和实践了解和掌握一点浅显而基本的性能分析能力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值