设为首页 收藏本站
查看: 2545|回复: 0

[经验分享] Jmeter分布式压测

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-29 15:01:06 | 显示全部楼层 |阅读模式
一、前提:
3台服务器,IP分别为:A、B、C
操作系统:不限(windows\linux均可)

二、操作步骤:
1.分别在3台服务器上安装java运行环境,jdk 1.6或更高

2.分别配置好java的环境变量
windows下:

新建变量:
变量名:ClASSPATH          变量值:,;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
变量名:JAVA_HOME       变量值:JDK的安装路径,如C:\Program Files\Java\jdk1.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,或者快捷图标 spacer.jpg ,若想执行单台,则点击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结果文件即可,结束后再用监听器进行分析


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321122-1-1.html 上篇帖子: 64位系统下报错:cannot load OCI DLL,126 下篇帖子: 在windows上安装maven
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表