发布新日志

  • Jmeter 均衡负载配置

    2016-04-11 15:20:40


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

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

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

    查找:
    remote_hosts=127.0.0.1
    修改为:
    remote_hosts=127.0.0.1:1099,192.168.31.104:1099 
    如果controller机器也作为agent, 那就在remote_hosts中配置上controller的IP,否则,不配置。

    (3) 运行所有 agent 机器上(127.0.0.1和192.168.31.104,)的jmeter-server.bat 文件

    (4)启动controller 机子上的jmeter应用jmeter.bat,选择菜单“运行”--->“远程启动”,来分别启动agent ,也可以直接选择“远程全部启动”来将所有的agent启动。

     

     

    遇到的常见问题

    1、在Controller端上控制某台机器Run,提示"Bad call to remote host"。

    解决方法:检查被控制机器上的jmeter-server有没有启动,或者JMeter.properties中remote_hosts的配置错误。
     
    2、Agent机器启动Jmeter_server.bat时,后台提示:"could not find ApacheJmeter_core.jar"
    解决方法:确定在Agent机器安装jdk,并设置环境变量
     
    3、远程启动时,报错:

    ERROR - jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
    at sun.rmi.server.UnicastRef.newCall(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at java.rmi.Naming.lookup(Unknown Source)
    at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)
    at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:67)
    at org.apache.jmeter.gui.action.RemoteStart.doRemoteInit(RemoteStart.java:180)
    at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80)
    at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81)

    这个问题终于被我解决了,其实原因好简单呀。只要将本机的server.bat执行即可。

    注意:要是在配置的地方写了127.0.0.1 的话 就要开本机的 sever.bat. 不写的话 就不用开了

     

    4、查看1099端口是否被占用

    netstat -ano | findstr "1099"
    tasklist | findstr "1099"


  • Jmeter + DadBoby 安装使用

    2014-03-04 14:47:38

       一直接触LR比较多,这阵子突然想了解一下开源的性能测试工具,无意中接触到了Jmeter+Badboy,这两款工具对于想进行性能测试,但又对LR高额的商业费用望而止步的小公司可谓是再适合不过了。

    自已小结一下:
    JMeter 是纯Java编写的功能与性能测试工具,但其录制脚本过于笨拙复杂,成为使用者的诟病。Badboy是用C++开发的,被用于测试和开发复杂的动态应用。 它提供了强大的屏幕录制和回放功能,同时也提供了丰富的图形结果分析功能。只要不用于商业目的就可以免费使用。因此这两工具的结合,就成为了绝配。你可以 用Badboy录制脚本,然后将录制的脚本导出为JMeter格式的脚本,最后将该脚本导入到JMeter,借助于JMeter强大的测试功能模拟大量的 虚拟用户,进行复杂的性能测试。

    1. 安装Badboy
          下载地址 http://badboy.com.au/download/index,按网页提示输入name/email/company等后下载标识为recommended的那个版本。
          这是一个可执行程序,下载之后双击,根据安装向导安装。

    2. 安装Jmeter
    http://jmeter.apache.org/选择Download Releases --点击下载Binary: apache-jmeter-2.7_src.zip(注意zip包才是适合windows系统的,其中Source是可以看到源码的包,如果不需要查看源码可以只下载Binary下的zip包。)下载后解压;
    安装Jmeter需本地安装JDK及配置好环境变量,详细配置如下:
      解压apache-jmeter-2.7_src.zip至C盘c:\apache-jmeter-2.7目录下,桌面选择”我的电脑“(右键)--高级--环境变量,在”系统变量“---”新建“,在变量名中输入:JMETER_HOME,变量值中输入:c:\apache-jmeter-2.7,再修改CLASSPATH变量,变量值中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar; 然后确定。
    然后到Jmeter\bin下运行jmeter.bat即可打开Jmeter

    3. 用Badboy录制脚本并到处为JMeter格式的脚本
         在开始菜单中启用Badboy,点击工具栏上的红色圆饼按钮,开始录制,然后在URL框中输入你要测试站点的URL。随便点击几个链接,然后点击工具栏上的黑色方框按钮,停止录制。最后点击 File –>Export to JMeter… ,将录制的脚本导出为Jmeter格式的脚本。

    4. 启用JMeter,导入Badboy录制的脚本,并设置测试计划,开始测试
    然后点击 文件 –>打开,在文件管理器中选择你刚导出的Badboy录制的脚本。




    Jmeter和LR一样有着录制脚本、参数化、检查点、集合点、设置关联、场景等。

    1,Jmeter参数化:
    先准备一个dat文件保存在本地,然后选择”选项“---函数助手---__CSVRead--输入dat文件保存的路径如C:\test.dat,点击生成并复制${__CSVRead(c:\test.dat,)}

    找到需参数化的页面--将复制的${__CSVRead(c:\test.dat,)}粘贴到参数化值的位置。


    2,检查点:
    检查对对象设置:右键点击某页面---->添加---->断言---->响应断言
    检查结果:添加一个断言结果,右键点击页面---->添加---->监听器---->断言结果
    还可以再添加一个“查看结果树” 右键点击我们的“登录”页面---->添加---->监听器---->查看结果树

    3,集合点设置:
    右键点击 step1---->定时器---->Synchronizing Timer,这样子就添加了一个“集合点”,如果发现集合点的位置不对,可发随需要插入到相应位置。




    4,关联:
    方法一,从前一个请求中取,用正则表达式提取器。
    具体方法,在需要获得数据的请求上右击添加一个后置处理器-->正则表达式提取器
    引用名称即下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
    正则表达式中()括起来的部分就是要提取的。.代表任意字符,*代表出现任意次。
    模板,用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给title。
    匹配数字,0代表随机,-1代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。

    方法二,用xpath从前一个请求中取。这种形式比较适合于返回为xml片段的情况。
    在需要获得数据的请求上右击添加一个后置处理器-->xPath Extractor。
    引用名称即下一个请求要引用的参数名称,如填写body,则可用${body}引用它。
    XPath query,即xpath的表达式,要符合xpath的语法。

      有些是从网上总结的,便于以后学习,第一阶段先小小总结一下,算是入个门。
Open Toolbar