zoukankan      html  css  js  c++  java
  • Jmeter分布式压测

    一、前提:
    3台服务器,IP分别为:A、B、C
    操作系统:不限(windowslinux均可)
     
    二、操作步骤:
    1.分别在3台服务器上安装java运行环境,jdk 1.6或更高
     
    2.分别配置好java的环境变量
    windows下:
     
    新建变量:
    变量名:ClASSPATH          变量值:,;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;
    变量名:JAVA_HOME       变量值:JDK的安装路径,如C:Program FilesJavajdk1.6.0_26
    PATH已存在,修改下即可    变量名:Path,在已有的变量值前增加:%JAVA_HOME%/bin;%JAVA_HOME%/jar/bin;
     
    检测是否配置成功:
    最后在cmd中运行  javac  、java 、 java -version  如果能正确打印出来,就说明配置java成功
     
    linux是修改 /etc/profile文件,增加以下文本即可:
    export JAVA_HOME=/usr/share/jdk1.6.0_14 (安装目录)
    export PATH=$JAVA_HOME/bin:$PATH 
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
     
    3.将Jmeter安装包拷贝到3台机器的任意目录下
    如:从官网下载Jmeter-2.13版本,apache-jmeter-2.13.zip,将其解压,放置D盘根目录(哪儿都成)
    注:各个服务器安装的版本要一致,使用的jar也要一致,否则会报错;
     
    4.假定设置A为ctroller,B、C为agent
    windows环境下,则需要修改A的jmeter的bin目录下的jmeter.properties中的remote_hosts,Linux则不用
    如:remote_hosts=127.0.0.1,192.168.60.243:1099,192.168.60.212:1099
    其中:
    a.若本机同时也要参与并发,则写上127.0.0.1,否则不用;
    b.192.168.60.243和192.168.60.212分别为B和C的IP;
    c.1099为默认端口号;
    d.各IP间用逗号分隔
     
    5.配置测试计划
    windows下用gui模式去编辑测试计划,存为jmx文件
    注:
    若是给linux下运行,则不加任何监听器,只在运行命令处添加写文件
    windows下,也可以只添加Simple Data Writer监听器,写明路径,去掉其它监听器,消耗的资源更小
     
    6.启动服务
    windows下,A、B、C均启动jmeter-server.bat,若A只作controller不参与并发,则不用启;
    linux下,A、B、C均启动jmeter-server,若A只作controller不参与并发,则不用启;
     
    7.执行脚本
    windows下,点击run->remote start all,或者快捷图标,若想执行单台,则点击run->remote start 列表下对应的IP
     
    linux下,在bin目录下运行命令: ./jmeter -n -t sql.jmx -R A服务器ip1,B服务器ip,C服务器ip -l result.jtl
    其中:
    -n 表示nogui模式执行
    -t 表示测试计划的文件,即后面的sql.jmx(自定义文件名)
    -R  表示要远程的机器的IP(不需要端口号)
    -l 表示结果保存的路径(自定义,需要注意的是本文件jmeter不会自动创建,需要在运行前手动创建好)
     
    8.查看结果
    windows下,直接在各种监听器下查看即可
    linux下,把result.jtl放到windows下,用Jmeter打开,用各种监听器来查看(在任意testplan中添加任意监听器,点击右侧页面中的brower,打开result.jtl文件,jmeter会自动分析,并给出结果)
    问题:
    jmeter 2.13给出的result.jtl第一行是空的,少了各项的名称,可以将以下一行添加至文本第一行,即可打开:
    timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,bytes,grpThreads,allThreads,Latency
    也可以直接将第一行的空行删掉即可分析,它会走默认的配置项,经验证是正确的;
    另外,分析结果的时候,每分析完一个文件,就得清一下结果,否则相同label的会叠加到一起,结果就是叠加后的错误结果;或者可以将label即各request名称设为不同,则不会叠加
     
    三、说明:
    1.jmeter不会在执行期间做负载均衡,而是每一台机器都完整地执行整个测试计划,所以Jmx里若设置了并发500,则所有机器各并发500:如3台,则并发1500
    2.如用到了本地文件参数化,则需要把文件上传到3台机器上,且路径一样
    3.我自己的机器4g内存,跑500没问题,远程一台共跑2台并发1000也没问题
    4.远程会比单台更耗资源,所以远程多台时若controller所在服务器性能不好,可能产生内存溢出或网络阻塞等问题
    5.linux压测时,最好不要加任何的监听器,因为太耗性能了,只存jtl结果文件即可,结束后再用监听器进行分析
  • 相关阅读:
    [轉][Windows] 已啟用Win7遠端桌面,從家中連回去卻無法連線?
    [轉]False SQL Injection and Advanced Blind SQL Injection
    SQL Injection with INFORMATION_SCHEMA (Mysql)
    Exploiting hard filtered SQL Injections
    Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息
    12个月内自学完成4年麻省理工学院计算机科学的33门课程的scotthyoung所谓的超速学习理论&方法(费曼技巧)?
    SQLi filter evasion cheat sheet (MySQL)
    [轉]字符形注入
    [轉]渗透测试必备Firefox全套渗透装
    Phpexcel範例
  • 原文地址:https://www.cnblogs.com/mawenqiangios/p/11556166.html
Copyright © 2011-2022 走看看