简介

nGrinder 是基于 Grinder 开源项目,由 NHN 公司的开发团队进行了重新设计和完善。nGrinder 是一款非常易用,有简洁友好的用户界面和 controller-agent 分布式结构的强大的压力测试工具。

它的脚本,支持 Jython、Groovy 两种语言。

官方网站http://naver.github.io/ngrinder/

GitHub 地址https://github.com/naver/ngrinder

ngrinder 工作原理

它由一个 Controller 和与它相连的多个 Agent 组成。用户通过 Web 界面管理和控制测试,以及查看测试报告。

Controller 会把测试分发到每个 Agent 上去执行,用户可以在 Web 管理界面中,设置多个使用多个线程进程来并发的执行脚本。

nGrinder 的脚本是 python 语言写的。Controller 把这些脚本分发到各个 Agent 中,然后用 Jython 来执行。并在执行的过程中,收集运行情况、响应时间、测试目标服务器的运行情况等,并保存数据生成报告。

ngrinder 安装

  • 环境要求
  • jdk1.6 以上
  • Tomcat
  • 端口 16001、12000~12000+、13243(monitor)、8080(tomcat)
  • 下载包
  • 启动服务
  • 方法 1:直接运行
  • Java -jar ngrinder-controller-xx.war
或 java -XX:MaxPermSize=200m -jar ngrinder-controller-xx.war
  • 方法 2:采用 Tomcat 运行
  • 解压 Tomcat 包,把 ngrinder 的 war 包,放到 Tomcat 的 webapps 文件夹
  • 访问:http://localhost:8880/ngrinder-controller-3.4.4 账户信息: admin/admin

python实现压测脚本 ngrinder 压测脚本_jar

728 x 4021815 x 1002

 

  • 安装 Agents\monitor
  • 下载: 登录 Web 管理界面,点击顶部导航用户信息,在下拉信息中,选择‘下载代理’,将会自动下载 Agent,选择‘下载监控’,将自动下载 monitor 监控

python实现压测脚本 ngrinder 压测脚本_jar_02

728 x 4021792 x 990

 

  • 解压、启动 Agent:双击 run_agent.bat(windows) ‘./run_agent.sh’(linux mac)

 

[root@localhost ngrinder]#tar -xvf ngrinder-agent-3.4.4-192.168.114.130.tar [root@localhost ngrinder]# cd ngrinder-agent/ [root@localhost ngrinder-agent]# ./run_agent_bg.sh
  • 解压、启动 monitor:双击 ‘run_monitor.bat’(windows), './run_monitor.sh'(linux mac)

 

[root@localhost ngrinder]# tar -xvf ngrinder-monitor-3.4.4.tar [root@localhost ngrinder]# cd ngrinder-monitor/ [root@localhost ngrinder-monitor]# ./run_monitor_bg.sh

代理服务启动后,在页面 admin > 代理管理,就能看到代理服务器

python实现压测脚本 ngrinder 压测脚本_性能测试_03

728 x 4681489 x 958

 

制作脚本

在首页,Quick Start 文本框中输入 要录制脚本的地址,第二个文本框,选择生成脚本的语言类型,点击 开始测试 按钮,就可生成脚本。或者点击,菜单栏中的‘脚本

python实现压测脚本 ngrinder 压测脚本_docker_04

728 x 4701484 x 959

 

点击‘新建脚本’按钮,弹窗中,选择脚本类型,填写脚本名称,被测 URL(可选),点击‘创建’即可创建出一个对应脚本语言的脚本

python实现压测脚本 ngrinder 压测脚本_jar_05

728 x 2921210 x 485

 

点击脚本列表 ‘脚本名称’列中的脚本名称,即可打开对应的脚本详情,不懂的 groovy 或 jython 的同学,可抓紧这个机会,看看自动生成的脚本,长什么样子哦。当然,这些脚本支持修改、也支持上传自己写好的脚本文件。

性能测试

点击顶部菜单栏中的‘性能测试’菜单

python实现压测脚本 ngrinder 压测脚本_docker_06

728 x 4701481 x 955

 

再点击 ‘创建测试

python实现压测脚本 ngrinder 压测脚本_python实现压测脚本_07

728 x 7061466 x 1422

 

在这个页面中,填写‘测试名称’,填写‘代理’数量(根据后面的提示), 选择‘脚本’,如果脚本中有服务器地址,则可以不选择目标主机,如果没有,则需要添加‘目标主机’,然后点击右上角的‘保存 并运行’,这样就可以按照你的设计,进行性能测试了。

注意: Ⅰ、ngrinder 性能测试,支持 进程\线程 两种模式运行。

 

Ⅱ、想要进行负载测试,需要勾选

Ramp-Up 可用 复选框,然后才能进行负载场景配置

性能测试执行过程成功,状态为绿色(红色为执行过程中出错),执行成功,会展示一份测试报告概要。

python实现压测脚本 ngrinder 压测脚本_性能测试_08

728 x 4661464 x 937

 

点击‘ 详细测试结果’ 可以看到更加详细的测试报告

python实现压测脚本 ngrinder 压测脚本_python实现压测脚本_09

728 x 4771467 x 960

 

扩展

Ⅰ、8080 端口可能备用,可以指定其他端口

 

java -XX:MaxPermSize=200m -jar ngrinder-controller-xx.war --port 指定端口号

Ⅱ、想要后台运行

 

nohup java -XX:MaxPermSize=200m -jar ngrinder-controller-xx.war --port 指定端口号 &

Ⅲ、想要用 docker 方式部署

 

$ docker run -d -v ~/ngrinder-controller:/opt/ngrinder-controller --name controller -p 80:80 -p 16001:16001 -p 12000-12009:12000-12009 ngrinder/controller $ docker pull ngrinder/agent docker run -d --name agent --link controller:controller ngrinder/agent

好了,这么详细的介绍,你是不是已经可以快速上手,使用 ngrinder 了呢?

作者:Allen