您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
jmeter实现远程服务器性能测试
 
   次浏览      
 2018-3-12 
 

 

编辑推荐:

本文来自于csdn, 本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。

jmeter实现远程服务器性能测试

一、背景:

之前在Jmeter插件监控服务器性能一篇中说到,在非GUI环境中监控时为了保存监控数据需要修改jmeter脚本,并且每次通过施压机(远程服务器,非GUI环境)来压测时都要将jmeter脚本上传然后在服务器上通过命令行启动,测试完成后再把结果数据下载到本地GUI环境中查看,总是有很多不方便。

本次压测需求需要很大的并发量,例如3000,但是单台施压机难以实现,因此希望多台施压机并行,并且我能同步控制它们。

在这样的需求下经过了解,jmeter工具本身有一个很强大的远程启动功能,于是尝试了一下。

二、jmeter分布式原理

这个远程启动,网上说的高大上一点,就是jmeter的分布式控制~ 具体控制如下图:

客户端机器作为一个控制器controller,控制多台slave机器的操作。

controller通过GUI界面启动slave机器,将jmeter压测发送给每台启动的slave,slave获得脚本后开始执行。slave本地不需预先存储脚本;

各台slave执行完成后,将结果传回给controller,controller收集整合显示。

三、jmeter远程启动配置

服务器(slave)配置

服务器(slave)需安装jmeter,最好与客户端(controller)保持同版本,jdk最好也保持同版本,无法满足时至少保证服务器上的jmeter能正常运行(如jmeter3.0以后需要jdk1.7及以上版本)。

在slave的%JMETER_HOME%bin目录下执行./jmeter-server命令启动jmeter服务就可以,启动成功如下图:

注意:上图红框中的ip为服务器的ip地址,当服务器有多网卡时它会随机挑选一个网卡使用,红框中的端口号port为启动jmeter服务监听的port,一般会有个默认端口号1099,但最好自定义,确保端口号不冲突。修改方法在下文介绍。

客户端(controller)配置

在客户端上要保证执行命令能发送到服务器,因此需配置客户端远程的ip地址和port。在客户端安装目录的bin文件夹下,找到jmeter.properties,修改配置如下图,其中ip和port即为上一步slave的ip和port,如上图中jmeter-server启动时红框中显示的内容。多个slave机器的配置可通过逗号分隔。

remote_hosts=10.165.124.6:1029

配置完成后打开客户端jmeter的GUI界面,在运行-远程启动中即可看到自己配置的slave机器。

添加一个脚本,点击远程启动即可启动运行slave机器,此时在服务器上可看到控制台信息,在客户端通过监听器-聚合报告或察看结果数可看到执行结果。

四、问题

slave机器的自定义端口号配置

在slave机器的%JMETER_HOME%bin目录下找到jmeter.properties,修改如下两项配置,即可自定义端口号:

server_port=1029
server.rmi.localport=1029

修改后执行服务端的jmeter-server即可看到控制台消息中修改是否生效;修改生效后需在客户端修改相应的jmeter.properties下的remote_hosts。

slave机器和客服端多网卡的问题

我在执行过程中slave机器的jmeter-server.log和客户端的jmeter.log中均报错提示connect refused。经过检查后发现服务器上有2个网卡,客户端有两个网卡,两台机器通过vpn在内网环境通信。而jmeter在远程通信的时候是随机选择一个网卡的ip,这样很容易导致连接不成功。

可通过如下配置指定服务器和客户端的网卡,在服务器端的jmeter-server文件中,修改配置指定服务器端的网卡ip

RMI_HOST_DEF=-Djava.rmi.server.hostname=10.165.124.6

在客户端的jmeter.bat中修改配置指定客户端的网卡ip

增加配置项:set rmi_host=-Djava.rmi.server.hostname=10.165.120.4
修改配置项:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD% %DDRAW% %rmi_host%

在修改配置后尝试远程启动,发现还是不成功,打开客户端jmeter.log,发现客户端发送成功;打开服务器端的jmeter-server.log显示服务器连接客户端不成功,尝试ping了一下也确实ping不通,然后网上搜了一下说是因为客户端的防火墙阻止了,关闭客户端所有防火墙,再次执行,测试成功。

依赖文件报错的问题

当jmeter脚本中需要依赖csv等数据文件时,该文件需上传至服务器,并需要设置正确的路径。

JMeter远程启动测试中出现结果的响应数据为空,原因是:

分布式测试中,通过远程启动代理服务器,注重的而是高并发,默认查看结果树中的响应 数据为空,只有错误信息会被报回。

   
次浏览       
相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践