一、性能测试工具对比
主流的ngrinder性能测试工具:
- LoadRunner
- Jmeter
- nGrinder
1.1 LoadRunner
- 优点
基于UI操作,容易上手,功能强大;收费;
- 缺点
安装包大,安装麻烦;不开源,扩展性不高;不支持平台化;
1.2 Jmeter
- 优点
基于UI操作,易上手;开源,支持二次开发;
- 缺点
基于线程运行,支持并发用户小(单节点支持用户数1000+);支持平台化(需要二次开发,例如开源平台MeterSphere);
1.3 nGrinder
- 优点
单节点支持5000+并发,B/S架构,本身支持平台化访问,不需要安装客户端;开源,可二次开发;
- 缺点
界面化功能较少(例如参数化),需要通过脚本开发操作,对测试人员代码要求较高;
比较点 | JMeter | Ngrinder | LoadRunner |
---|---|---|---|
实现语言 | Java | java/python | java/VB/C/.NET |
使用方式 | C/S或Command | B/S | C/S |
支持分布式 | master/slave | controller/agent | master/slave |
开源方式 | 免费,完全开源 | 免费,完全开源 | 收费 |
支持协议 | 多种协议 | 多种协议 | 多种协议 |
资源监控 | monitor/plugin,如果二开,需要查找plugin的源码 | monitor方式 | 自带资源监控功能 |
社区活跃度 | 文档完善 | 有中文社区 | 网上资料和相关培训很多,购买正版还可以得到技术支持 |
是否需要编码 | 基本不需要 | 需要,Jython/Groovy | 需要 |
脚本的维护 | 本地 | 内置SVN,可以修改成git | 本地 |
脚本录制 | 可使用BadBoy进行录制 | 可通过PTS插件进行录制 | 自带录制功能 |
可扩展性 | 可增加plugin,输出结果可以再加工,扩展性强 | 可增加plugin,扩展性强 | 通过扩展函数库实现 |
安装 | 简单,解压即可 | 简单,可以下载安装包或绿色包解压 | 安装包比较大,安装繁琐 |
平台化 | 有开源或云端的压测平台 | 本身具备 | 无 |
二、ngrinder简介
官网:nGrinder
2.1 背景
ngrinder是一个基于grinder进行二次开发的性能平台,具有开源、易用、高可用、可扩展等特性,在grinder基础上实现多测试并行,通过web管理,实现了集群分布式测试;同时支持grovvy和jython脚本语言(grovvy性能更好),也实现了对目标服务的监控以及插件的扩展,实现更多虚拟用户并发(4C8G机器能支撑8000+虚拟用户);
2.2 ngrinder三大组件
ngrinder由controller、monitor和agent三大组件组成;
1)Controller
- 创建用户和脚本
- 创建测试任务
- 分发调度负载机执行测试任务
- 整理和显示测试结果
- 管理负载机(下载和查看)
2)agent
- 压测任务的拉取
- 运行测试进程和线程
- 监控agent所在服务器的系统性能
3)monitor
- 监控被测服务器的系统性能
三、nGrinder工作原理
3.1 非集群架构
ngrinder是通过控制台Controller创建测试任务,调度执行机agent执行svn上的测试脚本,向测试目标服务器发起压力,在目标服务器上提前搭建监控器monitor,监控目标服务器的资源使用(CPU、MEM、IO等),并在控制台controller实时展示测试结果,包括处理能力、响应时间、成功率以及目标服务器资源使用等,最终生成测试报告;
3.2 集群架构
ngrinder从3.1版本开始支持controller集群
四、ngrinder环境搭建
ngrinder环境搭建包含controller、agent和monitor3个部分;
4.1 Controller部署
1)依赖环境
- linux 服务器-centos
- jdk环境
- ngrinder war包 -----最新war包下载:https://github.com/naver/ngrinder/releases/
2)服务端启动
将war包上传到安装好jdk环境的linux服务器上,执行如下命令,启动controller(war包名字根据下载的文件名填写)
|
服务启动好后,通过output查看日志,验证服务是否启动成功
|
3)访问控制台
服务成功启动后,通过浏览器可访问控制台,在浏览器打开网址:
http://10.182.35.29:8080/,ip地址为控制台controller所在服务器的IP地址
账号/密码:admin/admin1234(默认admin)
controller部署成功,成功访问如下所示:
4.2 Agent部署
agent可以部署在windows或linux服务器,建议安装在linux服务器;
1)下载agent
登录ngrinder控制台http://10.182.35.29:8080/,点击右上角菜单【下载代理】下载agent(ngrinder-agent-3.5.8-10.182.35.29.tar)
2)上传agent到服务器
通过跳板机,将agent上传到执行机所在的linux服务器
3)解压agent
登录执行机agent所在服务器,将agent进行解压
|
解压后得到ngrinder-agent文件夹,文件目录如下:
4)配置控制机地址
登录agent所在服务器,跳转到ngrinder-agent文件夹(例如:/root/ngrider-agent),编辑__agent.conf ,将agent.controller_host=127.0.0.1修改为控制机的地址(从控制机上下载的agent,默认带控制机的地址,可不用修改)
ps:执行机启动后,__agent.conf会自动删除,如果需要重新配置,需要重新解压tar包使用
|
5)启动agent
- 登录agent所在服务器,跳转到ngrinder-agent文件夹(例如:/root/ngrider-agent),执行启动命令:
|
- 启动成功后,查看启动日志output
|
- 启动验证
执行命令:ps -ef|grep java,查看agent是否正常启动;
agent成功启动后,在控制台【右上角菜单-代理管理】可查看已经启动的agent代理
- 停止agent
登录agent所在服务器,跳转到ngrinder-agent文件夹(例如:/root/ngrider-agent),执行停止命令
|
4.3 monitor部署
monitor可部署在agent和被测系统所在的服务器,用于监控agent和被测服务器的资源使用;
1)下载monitor
打开控制台controller,通过【右上角菜单-下载监控】,下载监控ngrinder-monitor-3.5.8.tar;
2)将监控ngrinder-monitor-3.5.8.tar上传到要监控的服务器,执行命令解压文件
|
解压后文件目录如下:
3)启动监控
|
4)查看监控
在控制台创建测试任务,在目标主机中添加监控器所在的服务器ip地址
执行过程中,在【执行页面-目标状态】可实时查看被监控服务器的资源使用
执行完成,在【测试报告-详细测试结果】,点击【目标服务器】可查看详细监控报告图形;监控内容,可进行二次开发,展示更多监控内容;
如果没有启动监控,monitor展示为空
五、第一个性能测试脚本
环境部署搭建完成后,可进行性能测试脚本及场景的创建和执行;下面以访问baidu接口为例,演示ngrinder脚本和场景的创建及执行;
接口:
1)打开浏览器,访问控制台
2)创建脚本
点击【脚本】,在脚本页面,点击【创建-新建脚本】创建脚本
输入脚本名称、接口地址,创建脚本
3)脚本代码
展开源码
4)脚本调试
脚本创建调试完成,点击【验证】执行脚本,test通过表示脚本执行通过;默认请求状态码200,执行通过;可保存关闭脚本;
5)创建场景
在控制台,点击【性能测试】,打开性能测试场景页面;
- 点击【创建测试】,打开创建场景页面,编辑场景信息,保存并执行;
- 实时查看执行结果
- 查看测试报告
执行完成后,查看测试报告和详细测试结果
测试报告,可查看场TPS、响应时间、成功率以及日志信息(压缩包,需要下载查看);
详细测试结果-执行报告,图表展示TPS、响应时间等信息
详细测试结果-目标服务器,查看被监控服务器的资源使用;