zoukankan      html  css  js  c++  java
  • jmeter 环境部署、数据库设置、分布式设置、多网卡配置等随笔

    <!-- linux系统修改系统环境变量  系统语言-->
    [root@web-249 ~]# env|grep LANG
    LANG=zh_CN.UTF-8
    [root@web-249 ~]# export LANG=zh_CN.UTF-8
    [root@web-249 ~]# export LANG=en_US.UTF-8
    [root@web-249 ~]# env|grep LANG
    LANG=en_US.UTF-8


    <!-- JMETER 不同线程组 变量值 的参数传递-->
    线程组 1   
    在线程组1中使用__setProperty函数设置jmeter属性值(此值为全局变量值),将所需变量值如${oldtoken}设置为jmeter属性值,即newtoken,示例:

    1、添加--后置处理器 -- 正则表达式
    2、使用正则表达式获取第一个线程组得到的响应信息 例如:oldtoken
    3、添加--后置处理器 -- BeanShell PostProcessor
    4、设置    BeanShell PostProcessor
        Parameters: ${oldtoken}    
        Script:
             String oldtoken = bsh.args[0];
             print (oldtoken);
             ${__setProperty(newtoken,${oldtoken},)}

    线程组 2
    在线程组2中使用_p函数来调用jmeter属性,获取属性值,从而实现跨线程组,参数值传递。
    1、直接使用  ${__P(newtoken,)}   即可获取token的值



    求并发用户数公式

    在实际的性能测试工作中,测试人员一般比较关心的是业务并发用户数,也就是从业务的角度关注应该设置多少个并发数比较合理。

    下面找一个典型的上班签到系统,早上8点上班,7点半到8点的30分钟的时间里用户会登录签到系统进行签到。公司员工为1000人,平均每个员上登录签到系统的时长为5分钟。可以用下面的方法计算。

        C=1000/30*5=166.7

    C表示平均并发用户数,那么对这个签到系统每分钟的平均在线用户数为166

    当然,在性能测试上,任何公式都不是严谨的,最重要的是对系统做出有效正确的分析。

     --------------------------

         估算并发用户并发数公式:

    1、用户从登陆系统到退出系统的间隔时间L
    2、登陆系统的用户数量n
    3、被考察的时间长度T
    并发用户数C=nL/T
    举例:
    如果系统有3000个注册用户,平均每天400个用户要访问系统,一般一个典型用户在系统中停留4小时(从登陆到退出),在一天内,用户在8小时内使用该系统
    并发用户数=400X4/8=200 如果你要计算峰值用户数的话,用另外一个公式
    C1=C+3 X sqr(C)
    C表示并发用户数
    根据我之前算出的结果,并发用户数是200,那么公式为:
    C1=200+3 x sqr(200)=242


    <!--jmeter  链接数据库测试设置-->
    1、测试计划添加驱动
    2、添加 测试元件 JDBC Connection Configuration
    3、配置连接信息
    Datebase URL     :jdbc:mysql://localhost:3306/test
    JDBC Driver class:org.gjt.mm.mysql.Driver
    Username         :root
    Password         :


    Datebase                          URL                                                             Driver class    Database                         
        
    MySQL                         jdbc:mysql://host:port/{dbname}                                     com.mysql.jdbc.Driver                         
    PostgreSQL                     jdbc:postgresql:{dbname}                                             org.postgresql.Driver                         
    Oracle                         jdbc:oracle:thin:user/pass@//host:port/service                         oracle.jdbc.driver.OracleDriver                 
    Ingres (2006)                 jdbc:ingres://host:port/db[;attr=value]                             ingres.jdbc.IngresDriver                         
    MSSQL                         jdbc:sqlserver://IP:1433;databaseName=DBname                         com.microsoft.sqlserver.jdbc.SQLServerDriver    
                                    或者                                                                 或者                                             
                                 jdbc:jtds:sqlserver://localhost:1433/"+"library"                     net.sourceforge.jtds.jdbc.Driver                       

    <!-- jmeter   linux 部署环境  -->

    1、上传tgz文件
    2、解压文件    tar -zxvf filename

    3、解压完成后,添加环境变量:
    vi /etc/profile 键入i,可编辑状态,按ESC,退出可编辑状态到命令行,键入“:wq”,按回车保存并退出vi

    添加下述两行:
    export JMETER=/root/apache-jmeter-3.0
    export PATH=$JMETER/bin:$PATH
    export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH

    完成添加后下述命令使配置生效:
    source /etc/profile
    检查是否配置成功:命令行输入
    jmeter -v  

    4、执行JMX文件      jmeter -n -t baidu.jmx -l /root/log.jtl
    5、检查执行结果  cat /root/log.jtl     出现200,OK则执行通过
    分布式操作
    6、bin目录下启动server-jmeter  

        sh jmeter-server      或者    nohup sh jmeter-server &
    7、检查启动是否成功

    ps -ef|grep jmeter-server
    ps aux|grep jmeter-server

    <!-- jmeter 分布式性能测试(Agent配置) -->
    在1.4G Hz~3GHz 的CPU 、1GB 内存的 JMeter 客户端上,可以处理线程 100~300。
    但是Web Service 例外。XML处理是 CPU 运算密集的,会迅速消耗掉所有的CPU 。
    一般来说,以XML技术为核心的应用系统,其性能将是普通Web 应用的 10%~25% 。
    另外,如果所有负载由一台机器产生,网卡和交换机端口都可能产生瓶颈,所以一个JMeter 客户端线程数不应超过 100 。

    采用JMeter 远程模式并不会比独立运行相同数目的非GUI 测试更耗费资源。
    但是,如果使用大量的JMeter 远程服务器,可能会导致客户端过载,或者网络连接发生拥塞。

     

    使用多台机器产生负载的操作步骤如下:

    (1)在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。

    (2) 运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.9.99 和192.168.9.130 作为agent)

    (3)在controller机器的jmeter的bin目录下,找到jmeter.properties 文件,编辑该文件:

    查找:
    remote_hosts=127.0.0.1
    修改为:
    remote_hosts=192.168.9.99:1099,192.168.9.130:1099

    这里要特别注意端口后,有些资料说明端口1644为jmeter的controller 和agent 之间进行通信的默认RMI端口号,
    但是在测试时发现,设置为1644运行不成功,改成1099后运行通过。另外还要留意agent的机子是否开启了防火墙等。




    <!-- jmeter 分布式性能测试(多网卡配置) -->
    我们要在多网卡的服务器上开启RMI服务的话必须指定IP,使他们能够在同一个网段内。

    需要以下几步(假定所有机器都在10.120.11.*网段,agent服务器为linux,controller服务器为windows):

    1、 修改agent服务器,指定agent机器的IP
    修改jmeter-server文件
    # vi jmeter-server
    修改RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(需要连接的IP)

    2、修改server服务器,指定server机器的IP

    修改jmeter.bat文件

    新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214

    修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%

  • 相关阅读:
    MSBI
    Jsoncpp 使用方法大全
    Jsoncpp的使用
    istringstream、ostringstream、stringstream 类介绍 和 stringstream类 clear函数的真正用途
    使用 GDB 调试多进程程序
    操作系统标识宏
    gdb调试多线程程序总结
    boost 1.56.0 编译及使用
    c++ bind1st 和 bind2nd的用法
    纯真IP数据库(qqwry.dat)转换成最新的IP数据库格式(ipwry.dat)
  • 原文地址:https://www.cnblogs.com/allen-zml/p/6552595.html
Copyright © 2011-2022 走看看