使用Jmeter做接口压力测试

转发是对小编的最大支持

文本原作者:飞翼_U

缘由

前段时间只是看了小强的视频,跟着视频做一些实验,这周有个项目需要做压力测试,我便做个全程记录,以后自己用到也回来看看,毕竟很长时间不做就忘记了。

业务场景

可知某系统A目前是2台机器承受10W用户,以后用户会扩展到200W,问:大概需要多少台机器?

测试思路

在window本机上创建测试计划形成 .jmx。然后拿到linxu系统去跑测试计划进行打压

最后把跑通的脚本保存为 .jmx文件。

2.在linux环境执行测试计划(打压)

把脚本上传到 linxu环境,可以在脚本里面直接修改参数(并发数、运行时间、参数文件的位置)

在 jmeter 的bin目录下执行测试计划,执行命令如下;

×

使用Jmeter做接口压力测试-实战

飞翼_U

2017.03.12 21:09* 字数 1221 阅读 16290评论 35喜欢 22

缘由:

前段时间只是看了小强的视频,跟着视频做一些实验,这种学习方式总会给人一种 ‘我学的是假Jmeter’ 的错觉,这周有个项目需要做压力测试,我便做个全程记录,以后自己用到也回来看看,毕竟很长时间不做就忘记了。

业务场景:

可知某系统A目前是2台机器承受10W用户,以后用户会扩展到200W,问:大概需要多少台机器?

测试思路:

在window本机上创建测试计划形成 .jmx。然后拿到linxu系统去跑测试计划进行打压

1)window系统,下载.zip包解压,添加环境变量,就ok . windows系统安装jmeter

2)linux安装,下载tar.gz包解压,添加环境变量,linux系统安装jmeter

cat /etc/profile

验证是否安装好,返回如下的信息就代表安装好了

1.在windows环境录制测试计划

1)打开jmeter,创建测试计划(线程组-sampler(HTTP请求-监听器(查看结果树、聚合报告)))

100个并发打压2分钟.png

HTTP请求,填写IP,端口,请求方法,路径,参数名称和值

HTTP请求.png

以上截图中的参数名称是接口文档里面定义的,值是我们设定的。设定参数值的方法很多,第一个方法 是在文件中取值,比如第一个参数 UserID 是在一个文件中去的,如果在文件中取值需要添加 配置元件(CSV Date Set Config)进行参数化,如下图:

配置元件.png

取参数也可以通过函数 动态生成数据,如 $指在后面的字符中随机取8个数字。

查看结果树和聚合报告是用来查看执行计划是否成功以及各项指标的。

保存测试计划.png

最后把跑通的脚本保存为 .jmx文件。

2.在linux环境执行测试计划(打压)

把脚本上传到 linxu环境,可以在脚本里面直接修改参数(并发数、运行时间、参数文件的位置)

在 jmeter 的bin目录下执行测试计划,执行命令如下;

执行命令后还需要观察打压过程是否有报错,监控linux服务器的cpu 、内存、负载等。

如果脚本过程有报错,还要去监控应用的日志,我在打压的时候应用日志就报了内存泄露;

这时候需要分析内存泄露在什么地方,什么地方占用内存,执行命令:

dump下来的文件需要用工具分析,具体使用工具 Memory Analyzer,

后来就把报告发给研发分析,也发给我们经理看了下,最终他们给出的结果是 被压的页面没有关闭session,如下修改:

后来关闭后再打压果然不报错了,老大说这种这种问题很常见,不得不感叹经验很重要呀!

最后展示一下某个接口的打压情况:

现在打压出了接口的TPS,但是我还不知道要根据这个TPS怎么判断出使用几台服务器,周一把数据汇报给经理再确定。

和老大商讨后的结果:根据现网10W认证用户可以算出:

就算用户增加到200W,算出来的 是:600多,但是打压出来的系统能力远不止这些,所以目前2台服务器就可以支撑了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180116A04JOK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券