• 自动化测试之JDBC连接、分布式负载


    一、Jmeter JDBC连接

    Jmeter支持连接数据库,对SQL语句进行性能测试,JDBC Connetction Configuration用来配置连接信息。

    1、把JDBC驱动的jar包引入测试计划

    Jmeter要连接mysql数据库,首先得下载mysql jdbc驱动包,这里使用的是mysql-connector-java-5.1.7-bin.jar

    选择测试计划——浏览——jar包路径——选中mysql-connector-java-5.1.7-bin.jar——导入即可

    2、设置JDBC连接池(在JDBC Connetction Configuration元件中进行设置)

    接下来新建一个线程组,右击线程组——配置元件——选择JDBC Connetction Configuration

    配置信息如下:

      Variable Name for created pool(连接池名称):一定要写,JDBC Request通过此名称来获取连接池中的连接;可以随意填写,但最好具有业务意义,至少能让你秒懂。还有一条,在整个测试计划中此名称最好唯一,如果有多个JDBC Connetction Configuration,且名称重复,则Jmeter无法去做选择。

      Max Number of Connection(连接池最大连接数):这里设置为10

      Database URL(数据库连接地址):jdbc:mysql://IP地址:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true

        ?前为固定写法,IP地址填写数据库服务器的IP,3306为默认端口号,test表示要连接的数据库名称,

        useUnicode=true表示是否使用Unicode字符集,characterEncoding=utf8表示当Unicode设置为true时,指定字符编码使用UTF-8

        allowMultiQueries=true表示允许多条语句查询 

      JDBC driver class选择com.mysql.jdbc.Driver

      Username和Password为数据库的账号密码

      其它参数按照下图设置即可

    3、添加JDBC Request

    接下来再右击线程组——取样器——选择JDBC Request

    配置信息如下:

      Variable Name of Pool declared in JDBC Connection Configuration中的变量名一定要与JDBC Connetction Configuration中的Variable Name for created pool(连接池名称)保持一致

      Query Type(SQL语句类型):

        Select Statement:可执行查询语句

        Update Statement:可执行更新操作,包括插入和修改

        Callable Statement:对应JDBC规范中的CallableStatement对象,它为所有的DBMS提供了一种以标准形式调用存储过程的方法,白话就是可以调用存储过程,也就是可以有入参,有占位符,总之支持SQL语句的增删改查。

        后面的不再赘述

      Query中可填写SQL语句

    4、点击【启动】,请求发送后,点击察看结果数的响应数据

    二、Jmeter之分布式压测

    前期准备:

    1、负载机(最少一台)建议使用Linux,安装好JDK、Jmeter,并配置好环境变量

    这里使用的是1.8JDK和Jmeter5.0,如何配置环境变量不在此赘述。

    环境变量配置好后记得source /etc/profile,根目录下执行jmeter,出现下图表示配置成功

    2、分别修改contrller和agent的配置文件jmeter.properties,找到server.rmi.ssl.disable取消注释,并改为server.rmi.ssl.disable=true,如下图所示:

    修改完成后,回到contrller的jmeter.properties中,添加远程agent的IP地址和端口号(默认为1099,可在agent的配置中文件更改,更改server_port即可),如下图所示:

     启动agent的服务,执行命令:jmeter-server,下图表示启动成功

    打开contrller的jmeter,建立脚本,选择运行——远程启动——负载机,这里报错连接超时,是由于防火墙未关闭或测试controller和agent不在同一个网段会影响远程连接。

    解决办法:关闭agent的防火墙。contrller和agent在同一网段,比如选择了同一个WIFI,配置同一个DNS等方法解决。

    由于contrller和agent不在同一网段所以无法演示,感兴趣的朋友可使用本地虚拟机试试~

     注意:

      1、分布式配置成功的小伙伴儿,在使用分布式的压测过程中会发现,察看结果树中无响应数据,Don't worry,这是正常现象,因为察看结果树在压测过程中是浪费性能的,最好禁用掉。所以在使用分布式时,Jmeter去掉了响应数据(默认不展示,但可修改配置文件,在此不做说明)

    注意:

           2、如果脚本中使用了参数化文件,负载机同样位置也需要有一个相同的参数化文件,放在bin目录下即可;

    关于nogui的常用命令见下图:

    示例:jmeter -n -t bugfree.jmx -r -l ./bugfree.jtl -e -o ./bugfree -j bugfree.log

    释义:使用nogui模式进行分布式压测,脚本bugfree.jmx路径为当前路径,并在当前路径生成结果文件bugfree.jtl、测试报表(路径为bugfree)和日志文件bugfree.log

  • 相关阅读:
    HDU 4320 Arcane Numbers 1(质因子包含)
    BZOJ 3673: 可持久化并查集(可持久化并查集+启发式合并)
    Codeforces Beta Round #65 (Div. 2) C. Round Table Knights
    HDU 4496 D-City(逆向并查集)
    HDU 3047 Zjnu Stadium(带权并查集)
    HDU 4104 Discount(n个数不能构成的最小值)
    hihoCoder 1515 分数调查(带权并查集)
    POJ 1733 Parity game(种类并查集)
    Codeforces Round #107 (Div. 1) B. Quantity of Strings(推算)
    CSU 2005 Nearest Maintenance Point(最短路+bitset)
  • 原文地址:https://www.cnblogs.com/huohuli/p/10618576.html
Copyright © 2020-2023  润新知