服务端图片上传接口性能压测总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

服务端图片上传接口性能压测总结

一。性能测试时需要关注点

用户操作的相应时间

服务器资源使用情况是否合理

应用服务器和数据库资源使用是否合理

系统能否实现扩展

系统最多支持多少用户访问、系统最大业务处理量是多少

系统性能可能存在的瓶颈在哪里

更换那些设备可以提高性能

二。性能压测需求分析

一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

QPS(TPS):每秒钟request/事务数量

并发数:系统同时处理的request/事务数

响应时间:一般取平均响应时间

理解了上面三个要素的意义之后,就能推算出它们之间的关系:

QPS(TPS)= 并发数/平均响应时间或者并发数= QPS*平均响应时间

一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

在原始需求描述中是这样:

文件上传:来自小强的Ngix接口

一天:1个接口42万,共4台服务器6个接口,42*6=252万个文件

高峰期1分钟:538个文件,538*6=3228个文件

在性能测试方法论中,很典型的方法就是二八原则,量化业务需求。

二八原则:指80%的业务量在20%的时间里完成。

按二八原则来计算(2520000X80%)/(20%X24X3600)=116.6 个请求/秒,这个数据是4台服务器的,再除以4 就是116.6/4=29.1个请求/每秒

高峰期峰值 538*6/60=53.8个请求/每秒

按计算出来的数据,被压测接口目前的QPS是29.1个请求/每秒,在高峰时能QPS 53.8个请求/每秒

三。环境准备

1. 被测服务器:因为被测接口是线上真实使用的,不能直接拿线上的测试,要小强单独部署一台同网络环境,同调优设置的服务器。

208.43.106.202

24 核32G

2. 压测服务器:与被压测服务器是同一网络环境,安装有

jdk1.8

208.43.106.198 物理机

8 核8G

3. 网络带宽:100M

4. 压测工具:jmeter 2.2.1

5.jmeter所需第三方jar包:通过实现jmeter基类,实现对被压测接口的调用,把代码编译成jar包,放入jmeter安装目录下的lib/ext目录里

6. 压测脚本:本地生成jmx脚本

关于第4步到第6步的操作以后放在Jmeter性能测试脚本编写中详细描述

7.测试数据准备:本次实例中使用的是460K左右的图片文件

四。初步性能测试

首先,我们来解释两个概念:压力测试和负载测试

负载测试:通常描述一种特定类型的压力测试——增加用户数量以对应用程序进行压力测试。比如实际中我们说从比较小的负载开始,逐渐增加模拟用户的数量,直到应用程序响应时间超时,就是说的负载测试。

压力测试:通过逐步增加系统负载,确定在什么负载条件下系统处于失效状态,以此来获得系统能提供的最大服务级别。

操作步骤:

1. 连接测试服务器

ssh -p58022 -i .ssh/tanhongbo tanhongbo@208.43.106.198

2. 上传jmeter工具包和测试图片,jmeter脚本

rsync -rave 'ssh -p 58022' --progress -r

upload.jmx tanhongbo@208.43.106.198:/home/tanhongbo

rsync -rave 'ssh -p 58022' --progress -r

IMG_0084.jpg tanhongbo@208.43.106.198:/home/tanhongbo

rsync -rave 'ssh -p 58022'

--progress -r apache-jmeter-2.12.zip tanhongbo@208.43.106.198:/home/tanhongbo

3. 将jmeter工具包copy到ec2-user用户目录下(因为权限问题,操作需要在ec2-user

目录下执行)

cp -fr apache-jmeter-2.12.zip /tmp/

sudo su - ec2-user

cp -fr /tmp/apache-jmeter-2.12.zip ./

4. 解压jmeter工具包

unzip -cv apache-jmeter-2.12.zip

5. 将upload.jmx和IMG_0084.jpg文件都copy到apache-jmeter-2.12/bin下

6. 执行jmeter的性能测试脚本

cd /apache-jmeter-2.12/bin (这里因为执行性能测试是短时间的,所以没把jmeter的bin 目录放入环境变量,而是直接跑到jmter的bin目录下执行)

./jmeter -n -t upload.jmx -l out.jtl >run.log

可以再开一个终端的tab 查看压测执行时的具体日志

tail -10f run.log

先解释一个概念:吞吐量:默认情况下表示每秒完成的请求数计算方式为请求数/请求总

处理时间

或者是 F=VU * R / T

相关文档
最新文档