Jmeter工具使用-分布式架构和服务器性能监控解决方案
在对项目做大并发性能测试时,常会碰到并发数比较大(比如需要支持10000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能来搭建分布式并发环境。
一、Jmeter分布式执行原理
架构示意图

1、Jmeter分布式测试时,选择其中一台作为调度机(Master),其它机器作为执行机(Slave)。
2、执行时,Master会把脚本发送到每台Slave上,Slave拿到脚本后就开始执行,Slave执行时不需要启动GUI,只需要在Slave上执行对应的启动命令,可以理解它是通过命令行模式执行的。
3、在被监控的Server服务器上安装性能数据采集插件Agent后,在执行过程中,Agent会把结果实时回传给Master,Master会收集所有Server的信息并汇总。
二、Jmeter安装教程
1、JMeter需要JDK环境,所以需要先安装JDK,安装教程请看:
http://blog.sina.com.cn/s/blog_6751e16f0101kdwu.html
2、下载JMeter的zip包,下载地址:http://jmeter.apache.org/download_jmeter.cgi
3、这里下载的是apache-jmeter-3.0.zip, 进行解压
Windows使用工具解压,例如:D:\Program Files (x86)\apache-jmeter-3.0
Linux使用unzip命令解压,例如:unzip apache-jmeter-3.0.zip -d apache-jmeter-3.0 (-d 为指定要解压到的文件夹名)
4、设置环境变量
Windows:右键“我的电脑”-》高级-》环境变量,在“系统变量”中点击“新建”,在变量名中输入:JMETER_HOME,变量值中输入:D:\Program Files (x86)\apache-jmeter-3.0,点击确定即可,再修改CLASSPATH变量,变量值中添加如下值:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;% JMETER_HOME %\bin; 然后点击确定即可
Linux:不配置环境变量,执行的时候只需要先切换到安装的目录
5、检查jmeter是否安装OK
Windows:打开cmd命令,输入jmeter.bat回车,也可以打开Jmeter的目录,双击jmeter.bat文件,如果正常启动Jmeter GUI界面则说明安装配置成功
Linux:使用cd命令切换至Jmeter目录下的bin目录,然后使用输入sh jmeter.sh启动Jmeter GUI界面,弹出界面则说明安装成功
三、执行机(slave)配置
执行机只负责接收调度机的任务去执行并发,配置比较简单。
1、切换至已安装好的Jmeter目录下的bin目录
Windows 双击jmeter-server.bat,启动成功如下图:

Linux 通过cd命令切换至Jmeter目录的bin目录,执行
./jmeter-server -Djava.rmi.server.hostname=192.168.0.178 (后面为ifconfig查到的IP地址)
2、上图上标红的IP和端口会在master里配置时用到。IP就是slave机器IP,端口默认是1099,端口也可以自定义,见第五点。
3、如果有多台slave机,重复1步骤。
四、调度机(Master)配置
调度机用作脚本配置、触发启动,服务器性能数据监控
1) 调度机负责脚本的分发
1、脚本创建:访问百度


2、配置Slave机信息,找到Jmeter的bin目录下jmeter.properties文件,修改remote_hosts的内容,IP和Port是slave机的IP以及默认端口1099,此处的端口可以自定义,见第五点:
remote_hosts=192.168.0.178:1099,192.168.0.179:1099 多台slave之前用","隔开,可以看到标红的这个就是上面截图slave的IP,端口默认为1099
3、打开Jmeter,选择运行,有运程启动、运程全部启动两个选项:

4、选择远程启动-->启动单个Slave或者全部启动
这里启动了192.168.0.178:1099一台slave,所以只有一个结果(线程数和循环次数都是1)

slave控制台信息:

2)调度机负责性能数据的采集
性能测试时,我们的关注点有两部分,第一服务本身并发、响应时间、QPS,第二服务器的资源使用情况:cpu memory I/O disk等,JMeter的plugins插件可以实现对"二"的监控,具体操作步骤如下(主要记录我的实践过程):
1、下载插件

2、解压Master调度机的两个文件,进入其路径JMeterPlugins-Extras(Standard)-1.3.1\lib\ex、JmeterPlugins-Extras.jar(JmeterPlugins-Standard.jar)两个文件,放到JMeter客户端的 lib/ext文件夹中,打开JMeter,可在监听器中看到Permon Metrics Collector,客户端配置成功。

3、将ServerAgent-2.2.1.zip上传到被测服务器,解压,进入目录,Windows环境,双击ServerAgent.bat启动;linux环境执ServerAgent.sh启动,默认使用4444端口,出现如下情况即服务端成功:

4、ServerAgent启动的校验
a、 在笔记本电脑打开telnet监听(控制面板-程序-打开或关闭Windows功能-telnet客户端勾选打开)
b、cmd进入命令框,输入如下内容:
telnet yourip 4444 #连接ServerAgent
test #发送test进行测试
exit #退出,即断开连接
c 、观察server端是否有接收到消息,有出现则说明ServerAgent打开成功
5、Jmeter客户端的监听测试
a、打开JMeter.bat,添加监听器Permon Metrics Collector-Add Row添加一行monitor配置(修改Host/IP为测试IP)-运行-观察server日志即chart图标内容。


b、添加线程组,设置循环次数为"永远";为线程组任意添加一个Sampler(并不设置参数),点击运行。如无意外可以获取chart图,点击stop,即结束监听数据。全部配置图如下



五、自定义端口:
上面其实已经实现了Jmeter的分布式测试,这部分主要介绍下如何自定义slave端口:
1、Slave:在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如修改为1888:
server_port=1888
server.rmi.localport=1888
2、启动slave机上的jmeter-server.bat,如下图,端口已经修改为:1888

3、Master:修改master机器的jmeter.properties文件:
remote_hosts=10.13.223.202:1000,10.13.225.12:1888
4、重启jmeter.bat,如下图,端口已经变了:

六、命令行启动
http://blog.csdn.net/defonds/article/details/40858005
七、其它说明:
1、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
八、参考资料
服务器需要安装监控插件:https://jmeter-plugins.org/wiki/PerfMonAgent/
监控机需要安装的插件:https://jmeter-plugins.org/wiki/PerfMon/
服务器性能指标说明:https://jmeter-plugins.org/wiki/PerfMonMetrics/
Jmeter工具使用-分布式架构和服务器性能监控解决方案的更多相关文章
- Jmeter 分布式架构和服务器性能监控解决方案
在对项目做大并发性能测试时,常会碰到并发数比较大(比如需要支持10000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能来搭建分布式并发环境 . 一. ...
- Zynga 开源其服务器性能监控分析工具 zPerfmon
流年不利的社交游戏服务商Zynga近日在官方博客宣布开源zPerfmon——该工具负责监控Zynga数以千计的社交游戏服务器.zPerfmon的源代码目前已经上传至Github. 包括Facebook ...
- 性能测试学习之路 (三)jmeter常见性能指标(相关术语、聚合报告 && 服务器性能监控配置 && 图形结果 && 概要报告)
1 性能测试目的 性能测试的目的:验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,以优化软件. 最后起到优化系统的目的性能测试包括如下几个方面: 1.评估系统的能力:测试 ...
- jmeter使用笔记——脚本录制,JMeter使用plugins插件进行服务器性能监控
脚本录制: 1.badboy录制 2.代理服务器录制 ①工作台添加HTTP代理服务器 ②设置目标控制器,分组,排除模式,包含模式(使用正则表达式筛选) ③设置浏览器,手动设置代理服务器,localho ...
- JMeter使用plugins插件进行服务器性能监控
JMeter使用plugins插件进行服务器性能监控 性能测试时,我们的关注点有两部分 1 服务本身:并发响应时间 QPS 2 服务器的资源使用情况:cpu memory I/O disk等 JMet ...
- Apache服务器性能监控
Apache服务器性能监控 1.使用自带mod_status模块监控 1)加载mod_status.so 模块 在httpd.conf中打开LoadModule status_module modul ...
- Web服务器性能监控分析与优化
Web服务器性能监控分析与优化 http://www.docin.com/p-759040698.html
- linux 服务器性能监控(一)
这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数.指标的含义以及一些交互操作. 几个问题 命令本身并不复杂,关键是你对操作系统基础知识的掌握和理解,先来看看下面几个问题: C ...
- 不懂这些分布式架构、分布式系统的数据一致性解决方案,你如何能找到高新互联网工作呢?强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构
互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对招聘中高频提及的分布式系统设计.架构(数据一致性)做了分析,祝各 ...
随机推荐
- [ZJOI2010]数字计数 题解
题面 这道题是一道数位DP的模板题: 因为窝太蒟蒻了,所以不会递推,只会记忆化搜索: 首先,咋暴力咋来: 将一个数分解成一个数组,这样以后方便调用: 数位DP的技巧:(用1~b的答案)-(1~a的答案 ...
- Ugly Numbers UVA - 136(优先队列+vector)
Problem Description Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, ...
- pat L2-008 复习manacher
马上要去比赛了 复习一下最长回文串的长度. 算法的实现两个步骤: 1. 一个是对原串的处理,在所有的空隙位置(包括首尾)插入同样的符号,要求这个符号是不会在原串中出现的.这样会使得所有的串都是奇数长度 ...
- redis的keys常用操作及redis的特性
redis的keys常用操作 1.获得所有的keys: keys * 2.可以模糊查询 keys:keys my* 3.删除keys:del mymkey1 mykey2 4.是否存在keys:ex ...
- webpack提取公共js代码
webpack打包js代码与提取公共js代码分析 webpack提取公共js代码示例 一.分析 webpack默认打包js代码时,是将从入口js模块开始,将入口js模块所依赖的js以及模块逐层依赖的模 ...
- 基于JWT的token身份认证方案(转)
https://www.cnblogs.com/xiangkejin/archive/2018/05/08/9011119.html 一.使用JSON Web Token的好处? 1.性能问题. JW ...
- HTML的学习2(代码)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结
更多内容:https://www.toutiao.com/i6599796228886626829/?tt_from=weixin&utm_campaign=client_share& ...
- c#类生成表
第一步: 创建MyContext类 public class MyContext:DbContext { public MyContext():base() { } public DbSet<U ...
- Odoo的 base 模型
Odoo 内核中有一个base插件模块.它提供了 Odoo 应用所需的基本功能.然后有一组内置插件模块来提供标准产品中的官方应用和功能.base模块中包含两类模型: 信息仓库(Information ...