linux环境下使用jmeter进行分布式测试
1、前言
熟练使用jmeter进行性能测试的工程师都知道,jmeter的客户端性能是有点差的。这会导致一个问题,其客户端的性能损耗会干扰到性能测试的结果,而且当线程数/并发大到一定程度时,客户端性能会急速下降,导致整个性能测试过程不可控。
比如说我自己这台啵罗啵罗的工作电脑,启动500线程,基本就卡死了。
因此在进行大压力性能测试时,通常的解决方案是使用分布式无界面测试的办法,将一台客户机的压力分布到数台执行机上,避免jmeter客户端的性能损耗。
下面就来详细阐述一下完成分布式压测的过程。
2、环境准备
- 物理准备
两台linux centos7服务器
- jdk安装
网上有大量的linux安装jdk攻略,此处不再赘述。
CentOS下个人推荐使用yum安装的方式,方便快捷,而且省去环境配置的痛苦。
yum search jdk
列出jdk可选安装包如下图所示:
然后选择合适的包安装:
yum -Y install java-1.8.0-openjdk.x86_64
当然要使用yum命令,可能需要配置YUM源等等,这里就真的不再赘述了。
- jmeter安装
这里推荐直接直接将你本地的jmeter客户端打包上传至linux服务器。因为我们编写jmeter测试计划还会在本地进行(因为图形界面比较方便操作),所以更推荐使用跟你本地一样的客户端,以免遇到版本不同所带来的不可预见的一些问题。
将本地jmeter客户端打成zip文件,上传到服务器目录,如/opt/jmeter(上传路径自由选择)。使用unzip命令进行解压,以我自己用的jmeter客户端为例:
unzip apache-jmeter-5.0.zip
当然,请注意unzip命令并非CENTOS默认自带的,也可能需要通过rpm或者yum先安装。
然后赋予解压后的文件夹完全权限:
chmod 777 -R apache-jmeter-5.0
然后使用如下命令配置jmeter环境变量:
export JMETER_HOME=/opt/jmeter/apache-jmeter-5.0
export PATH=$JMETER_HOME/bin:$PATH
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
并且:
source /etc/profile
使得配置生效。
这里直接修改/etc/profile文件,将环境变量配置写入到文件最后也是可以的。
配置好了以后,敲入:
jmeter -v
看到如下信息代表安装配置成功:
3、分布式配置
在至少两台linux服务器上安装好jmeter之后,下一步开始进行分布式的配置,其原理大抵如下图所示:
简而言之,我们将在执行机上启动jmeter-server的这样的一个小型服务,然后使用调度机通过ssl协议访问这一服务并向他发出执行指令和收集结果。
- 配置执行机
在执行机上编辑jmeter安装目录下的/bin/jmeter.properties配置文件,将:server.rmi.ssl.disable值改为true,代表允许ssl连接。
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
为避免jmeter-server的端口随机分配,继续修改如下两个值:
# the following property before starting the server:
server.rmi.localport=4000 # RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099
分别将这两个端口值改为你所想使用的端口号。
配置完毕后,用如下命令启动jmeter server:
jmeter-server -Djava.rmi.server.hostname=172.16.10.76
TIPS:如果想使用无日志模式,可以改写成如下形式:
nohup ./jmeter-server -Djava.rmi.server.hostname=172.16.100.76 >>1.txt &
在每一台执行机上完成如上配置并启动。
- 配置宿主机
同样编辑jmeter安装目录下的/bin/jmeter.properties配置文件,修改如下值,即指定执行机的地址与端口,如有多个以“,”隔开:
# Remote Hosts - comma delimited
remote_hosts=127.0.0.1:1099,172.16.100.76:1099
#remote_hosts=localhost:1099,localhost:2010
- 执行脚本
在控制机上运行如下命令:
jmeter -n -t test.jmx -R 172.16.100.76,172.16.100.77 -l testReport.jtl
或者(因为已在宿主机上配置了默认使用的执行机信息)
jmeter -n -t test.jmx -r -l testReport.jtl
其中参数的含义为:
- n:非gui运行
- t:指定测试脚本
- R:指定多少个 agent 启动并参与测试
- r: 代表全部 agent 启动并参与测试
- l:生成测试结果文件
启动后看到开始如下滚屏则表示测试已经运行成功:
- 查看日志
在分布式执行过程中,主要的日志可以查看:
- 执行机上的jmeter-server.log:记录执行过程中的详细信息,与单机执行时的jmeter.log等效
- 执行机的服务日志可以通过nohup命令将其写入外部文件,以便查看
- 测试执行的结果报告可以通过输入到jtl文件进行记录
linux环境下使用jmeter进行分布式测试的更多相关文章
- linux环境下使用jmeter进行压力测试
linux环境下使用jmeter进行压力测试 linux环境下使用就meter进行压力测试: linux环境部署: 在Linux服务器先安装jdk: 2.以jdk-8u172-linux-x64.ta ...
- mosquitto在Linux环境下的部署/安装/使用/测试
mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. ...
- Linux环境下安装Redis并完成测试(已验证)
准备工作: 本人测试环境:Win7 xshell远程登录Linux Linux: ubuntu 软件包:redis-3..2.6.tar.gz (Linux下redis安装包) =========== ...
- linux环境下安装jmeter,启动执行脚本
1.下载安装jmeter安装包 下载链接: https://pan.baidu.com/s/1KPhwNDsmTIAy41fEopHQEw 提取码: spwd 2.上传linux平台,解压jmeter ...
- 【Jmeter自学】Linux环境下Jmeter运行
==================================================================================================== ...
- linux环境下jmeter安装和运行
linux环境部署: 在Linux服务器先安装jdk:2.以jdk-8u172-linux-x64.tar.gz为例:下载地址:http://www.oracle.com/technetwork/ja ...
- LINUX环境下SVN安装与配置(利用钩子同步开发环境与测试环境)
安装采用YUM一键安装: 1.环境Centos 6.6 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /www/svndata svnserve ...
- linux环境下测试环境搭建
一.linux环境下测试环境搭建过程简述: 1.前端后台代码未分离情况下: 主要步骤为:安装jdk,安装mysql,安装tomcat,将项目代码部署到tomcat/webapps/下. 2.前端后台代 ...
- 在linux环境下安装redis并且搭建自己的redis集群
此文档主要介绍在linux环境下安装redis并且搭建自己的redis集群 搭建环境: ubuntun 16.04 + redis-3.0.6 本文章分为三个部分:redis安装.搭建redis集群 ...
随机推荐
- java锁的对象引用
当访问共享的可变数据时,通常需要同步.一种避免使用同步的方式就是不共享数据. 如果数据仅在单线程内访问,就不需要同步,这种技术称为"线程封闭",它是实现线程安全性最简单方式之一. ...
- 深入理解Redis之简单动态字符串
目录 SDS SDS与C字符串的区别 SDS获取字符串长度复杂度为O(1),C字符串为O(N) SDS杜绝了缓存区溢出 减少修改字符串时带来的内存重分配次数 二进制安全 Redis没有直接使用C语言传 ...
- ASP.NET Core错误处理中间件[3]: 异常处理器
DeveloperExceptionPageMiddleware中间件错误页面可以呈现抛出的异常和当前请求上下文的详细信息,以辅助开发人员更好地进行纠错诊断工作.ExceptionHandlerMid ...
- 图像分割论文 | DRN膨胀残差网络 | CVPR2017
文章转自:同作者个人微信公众号[机器学习炼丹术].欢迎交流沟通,共同进步,作者微信:cyx645016617 论文名称:'Dilated Residual Networks' 论文链接:https:/ ...
- [Usaco2008 Feb]Line连线游戏
题目描述 Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i个点 的横.纵 ...
- django 组件 自定义过滤器 自定义标签 静态文件配置
组件 将一些功能标签写在一个html文件里,这个文件作为一个组件,如果那个文件需要就直接拿过来使用即可: 这是title.html文件,写了一个导航栏,作为一个公用的组件 <div style= ...
- SQL Server和Oracle数据类型对应关系
在工作中,有时会遇到跨库传输数据的情况,其中 SQL Server 和 Oracle 之间的数据传输是比较常见的情况. 因为 SQL Server 和 Oracle 的数据类型有些差异,这就要求我们在 ...
- windows激活密钥
密钥来源,微软官方 KMS 客户端安装密钥 | Microsoft Docs Windows Server 2008 R2 操作系统版本 KMS 客户端安装程序密钥 Windows Server 20 ...
- GIS基本概念,空间分析
GIS基本概念,空间分析 一.GIS基本概念 1.1 要素模型(Feature) 1.2 矢量数据 1.3 空间分析 1.3.1 空间查询和空间量算 1.3.2 缓冲区分析 1.3.3 叠加分析 1. ...
- 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。
package com.minxinloan.utils; import java.math.BigDecimal; public class Arith { // 源文件Arith.java: /* ...