性能测试工具 Gatling 学习笔记 (一)---环境准备和初次使用

ZengTester · 2020年02月07日 · 最后由 ZengTester 回复于 2020年03月24日 · 2673 次阅读

一、背景

gatling 是什么呢?在这里我直接引用官方的原话,翻译来自于 chrome 右键翻译😸

Gatling是一种功能强大的负载测试工具。其设计目的是易于使用,可维护性和高性能。

开箱即用的Gatling对HTTP协议提供了出色的支持,使其成为负载测试任何HTTP服务器的首选工具。由于核心引擎实际上与协议无关,因此完全有可能实现对其他协议的支持。例如,加特林(Gatling)当前还提供了JMS支持。

拥有场景在代码中定义,并有效利用资源这是两个要求,这促使我们创造加特林。基于表达性DSL,场景是不言自明的。它们易于维护,可以保存在版本控制系统中。

只要基础协议(例如HTTP)可以以非阻塞方式实现,Gatling的体系结构就是异步的。这种体系结构使我们可以将虚拟用户实现为消息而不是专用线程,从而使它们非常便宜。因此,运行数千个并发虚拟用户不是问题。

gatling 是使用 scala 开发的一款压测工具,所以 gatling 不光需要 java 的语言环境还需要 scala 的语言环境。Gatling 支持带有 HotSpot 的 64 位 OpenJDK 8 和 OpenJDK 11。不支持其他 JVM,例如 JDK 12+,客户端 JVM,32 位系统或 OpenJ9。除了这些之外,从 gatling 3.0 开始,gatling 还需要 Scala 2.12。gatling 与 Scala 2.11 或 Scala 2.13 不兼容。


二、下载安装

Gatling 目前有两个版本,为开源版和收费的企业版,企业版相对来说功能更加完善,使用方便并且可自定义报表和支持分布式部署,但是相对来说成本较大,所以这里我选择免费的开源社区版。我把发送请求的服务器称作为 施压机 或者 施压服务器,施压机的系统我选择为 Centos,使用 linux 服务器在远程操控上会更加轻松。gatling 的社区版提供了两种安装方式,第一种是在官网上下载完全包 传送门 下载后解压完即可运行,所有依赖文件在项目目录下的 lib 中
在这里插入图片描述
在这里插入图片描述

第二种方式可以使用生成工具,Gatling 提供了一个名为 gatling-maven-plugin 的官方 maven 插件,但是必须在 pom.xml 中添加以下部分。该插件可让您编译 Scala 代码并启动 Gatling 工具。官方安装链接

  <sourceDirectory>src/main/scala</sourceDirectory>
  <testSourceDirectory>src/test/scala</testSourceDirectory>
  <plugins>
    <plugin>
      <groupId>net.alchim31.maven</groupId>
      <artifactId>scala-maven-plugin</artifactId>
      <version>MANUALLY_REPLACE_WITH_LATEST_VERSION</version>
      <configuration>
         <jvmArgs>
          <jvmArg>-Xss100M</jvmArg>
        </jvmArgs>
        <args>
          <arg>-target:jvm-1.8</arg>
          <arg>-deprecation</arg>
          <arg>-feature</arg>
          <arg>-unchecked</arg>
          <arg>-language:implicitConversions</arg>
          <arg>-language:postfixOps</arg>
        </args>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>compile</goal>
            <goal>testCompile</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

我一般使用 IDE 可以快速的构建 Gatling 项目,在 idea 中新建 maven 项目 选择 create from archetype 然后点击添加 archetype 按图中填写以下内容io.gatling.highcharts:gatling-highcharts-maven-archetype:3.3.0 ,可以快速创建 gatling 版本为 3.3.0 的 gatling 项目
在这里插入图片描述
随后按步骤创建 maven 项目,创建完成后会自动生成 galing 的项目目录
添加archetypeCatalog
创建完成


三、环境准备

在文章中我们有说的 Gatling 是一个小巧的开箱即用的工具,其实对 gatling 来说,在系统中拥有 java 环境既可以执行了,为什么我还会单独列出来一个章节来叙述 gatling 的环境准备呢?
因为在使用 gatling 时会消耗大量的打开文件句柄,但是通常操作系统会限制此数量,因此我们需要调整一些系统中的选项,是我们在压测过程中可以达到更大的并发数,不会因为文件句柄问题导致压测出现问题。
相关文章推荐:
Linux 内核参数调优
Linux 系统内核性能调优

  • 打开文件限制
    大多数操作系统都可以使用该命令更改打开文件限制。例:ulimit -n

    ulimit -n 65536
    

    但是如此修改的话只会影响到当前的会话,并没有对系统返回内永久生效,所以我们需要修改/etc/security/limits.conf,添加以下内容来使我们的配置永久生效

    * hard nofile 1024000
    * soft nofile 1024000
    

    保存后我们可以通过ulimit -a 或者 ulimit -n 来检测我们的配置是否生效了

  • 内核和网络调优
    考虑调整内核和网络,并在/etc/sysctl.conf 中添加以下这些设置:

    net.ipv4.tcp_max_syn_backlog = 40000
    net.core.somaxconn = 40000
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.ipv4.tcp_sack = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_fin_timeout = 15
    net.ipv4.tcp_keepalive_intvl = 30
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.core.rmem_max = 134217728
    net.core.wmem_max = 134217728
    net.ipv4.tcp_mem  = 134217728 134217728 134217728
    net.ipv4.tcp_rmem = 4096 277750 134217728
    net.ipv4.tcp_wmem = 4096 277750 134217728
    net.core.netdev_max_backlog = 300000
    

    到此我们便完成了 gatling 所需要的环境准备了

共收到 2 条回复 时间 点赞

进行负载压测的时候,网络环境影响大吗?

网络影响还是蛮大的。。。需要考虑带宽等多种问题,而且对网络影响也很大,如果走外网网关的话可能会对线上环境产生影响

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册