JMeter压测

压测学习

场景:对Eggjs框架实现的接口进行压力测试

工具:使用 JMeter 5.3

服务器:本地运行

1.JMeter的下载安装

下载地址:http://jmeter.apache.org/download_jmeter.cgi

下载二进制压缩包,解压之后,从bin目录打开jmeter.bat即可。

使用JMeter工具之前需要安装JAVA,配置JAVA环境,否则启动报错:

Not able to find Java executable or version. Please check your Java installation.
errorlevel=2
请按任意键继续. . .

2.使用JMeter

Eggjs编写一个接口

	// 登录验证
  async login() {
    const { ctx } = this;
    const { username, password } = ctx.request.body;
    if (username && password) {
      const user = await ctx.service.auth.login(username, password);
      if (user) {
        ctx.session[this.config.login.LOGIN_FIELD] = user;
        // 调用 rotateCsrfSecret 刷新用户的 CSRF token
        ctx.rotateCsrfSecret();
        ctx.body = await ctx.renderView('/html/messageBoard.html');
        return;
      }
    }
    await ctx.render('/auth/login.tpl', { message: '输入用户名密码错误' });
  }

这个接口主要是在获取user对象时,会对数据库进行一次查询

使用JMeter对这个接口进行测试

  1. 新建一个线程组

    右键点击TestPlan
    在这里插入图片描述
    在线程组页面中,可以设置同时发送给请求的线程数、线程组请求发送完成的时间以及线程发送请求的循环次数等 JMeter压测_第1张图片

  2. 在线程组上添加一个Http请求
    在这里插入图片描述
    在HTTP请求中配置服务器名称或IP、端口号、请求类型、请求路劲、参数
    JMeter压测_第2张图片

  3. 新建监听器

    创建监听器,可以更直观的查看测试结果的数据信息
    JMeter压测_第3张图片
    可以创建各种监听器,这里创建了查看结果树和聚合报告

  4. 保存测试计划,运行,查看监听器结果。

这里测试了1秒中执行10个线程,循环1次。
JMeter压测_第4张图片

3.压力测试

确定并发数400。

Rame-Up Period(in seconds),表示JMeter每隔多少秒发动并发,为1秒,即所有线程全部请求。

循环次数10次,这个设置不会改变并发数,可以延长并发时间。

调度器:设置压测的持续时间和启动延迟时间。设置持续时间为5分钟(300秒),
JMeter压测_第5张图片
压测结果:
JMeter压测_第6张图片
过程并不需要5分钟就完成了,出错的请求有21.17%。报的错误为服务器拒绝连接错误,此时已经无法再接受连接了。

在查看日志中发现,请求处理并没有异常错误,端口的使用,查阅资料之后得知可能是由于端口耗尽,才导致的异常。在压测时查看cpu,发现cpu使用经常达到100%,猜测也有可能是由于cpu耗尽导致的问题。

4.使用JMeter造数据

创建一个随机变量,用来传递不同的参数
JMeter压测_第7张图片
配置如下,可根据情况修改
JMeter压测_第8张图片
之后在HTTP请求中,在参数中使用${}调用
JMeter压测_第9张图片
运行测试计划即可进行造数据。

你可能感兴趣的:(工具学习)