高手的存在,就是让服务10亿人的时候,你感觉只是为你一个人服务......

nGrinder 介绍与安装

目录
  1. 1. 为什么选择nGrinder
  2. 2. 总体架构
  3. 3. ngrinder中文社区
  4. 4. nGrinder安装
    1. 4.1. 先决条件
    2. 4.2. 下载nGrinder
    3. 4.3. 启动nGrinder
    4. 4.4. 安装agent
    5. 4.5. 安装monitor
  5. 5. 安装完测试
    1. 5.1. 第一步,编写测试脚本
    2. 5.2. 第二步,场景设计
    3. 5.3. 第三步,场景执行

nGrinder是基于Grinder开源项目,但由NHN公司的nGrinder开发团队进行了重新设计和完善(所以叫做nGrinder)。

它是由一个controller和连接它的多个agent组成,用户可以通过web界面管理和控制测试,以及查看测试报告,controller会把测试分发到一个或多个agent去执行。用户可以设置使用多个进程和线程来并发的执行该脚本,而且在同一线程中,来重复不断的执行测试脚本,来模拟很多并发用户。

nGrinder的测试是基于一个python的测试脚本,用户按照一定规则编写测试脚本以后,controller会将脚本以及需要的其他文件分发到agent,用Jython执行。并在执行过程中收集运行情况、响应时间、测试目标服务器的运行情况等。并保存这些数据生成运行报告,以供以后查看。


为什么选择nGrinder

JMeter
基于UI操作,容易上手,但是不具备编程能力。其次JMeter基于线程模拟数千用户几乎不可能。

Tsung
基于Erlang,能模拟上千用户并且易于扩展。但是基于XML的DSL,描述场景能力弱,而且需要大量的数据处理才知道测试结果。

Locust
基于python的gevent,能模拟百万个用户。但是需要对python有一定理解。

Loadrunner
这个可以说是应用最多的一个,很方便,但是还是太重。往后的方向肯定是客户端工具逐步向平台化发展,所以loadrunner注定慢慢被淘汰(个人拙见)。而且不开源,扩展性不高,收费。

nGrinder
单节点支持3000并发、支持分布式、可监控被测服务器、可录制脚本、开源、平台化。

综上可以看出nGrindr还是有很多优势的。


总体架构

Alt text

nGrinder 由两个主要的组件组成:

Controller:

提供性能测试的web接口。
协调测试进程。
整理和显示测试的统计结果
让用户创建和修改脚本。

Agent:

在代理服务器上加载运行测试进程和线程
监控目标机器的系统性能(例如:CPU/MEMORY)

当 agent 启动时,它们试图连接到 controller,然后他们都附属在 AgentControllerServer 组件上。AgentControllerServer (可以看做为一个 agent 的池)管理当前 agent 池。每当用户开始性能测试时,一个新的 console 被创建,同时由 AgentControllerServer 提供所需数量的 agent。 SingleConsole (不是 Grinder 中的 Console ) 发送测试脚本和测试源码到多个指定的 agent , 同时开始控制测试流,直到测试结束。当测试完成后,所使用的 agents 归还给 AgentControllerServer ,以便在以后的其他测试中使用。 同样,SingleConsole 也会归还给 ConsoleManager 。

nGrinder 和 Grinder 最大的区别在于 nGrinder 在 controller 中保持多个 console 实例 和 agent 。每个 console 都是独立的,所有 console 都可以同时运行。每当有需要时,许多 agent 可以提前被提前关联和分配。与 grinder 不同,nGrinder 最大化 agent 机器的利用率。


ngrinder中文社区

http://ngrinder.642.n7.nabble.com/ngrinder-user-cn-f114.html


nGrinder安装

3台linux服务器:
192.168.42.164 部署controller
192.168.42.136 部署agent
192.168.42.32(被测应用机器) 部署monitor

先决条件

nGrinder是一个web应用(Controller)和Java应用(Agent, Monitor)的组合,需要安装JDK 1.6或更高的版本。

nGrinder需要用到很多端口

Agent : Any ==> Controller : 16001
Agent : Any ==> Controller : 12000 ~ 12000+(允许并发测试的数量)
Controller : Any ==> Monitor : 13243
Controller ==> Public user : 这取决于你的Tomcat的配置,默认为8080。

下载nGrinder

目前最新的版本是ngrinder3.4.1
https://github.com/naver/ngrinder/releases/download/ngrinder-3.4.1-20170131/ngrinder-controller-3.4.1.war

启动nGrinder

建议使用tomcat,把war包放在tomcat的webapps文件夹下即可.
启动tomcat的时候在catalina.sh中加上jvm参数:

JAVA_OPTS=”-Xms600m -Xmx1024m -XX:MaxPermSize=200m”

启动后,打开浏览器访问http://localhost:8080/ngrinder-controller-X.X
X.X表示war包名称

我这里问:http://192.168.42.164:8080/ngrinder-controller-3.4.1/login,登录名/密码:admin/admin

Alt text

安装agent

agent在controller页面中直接下载
Alt text

因为使用的是admin帐号登录,下载的agents包中的配置可以分享给所有的用户使用。
如果你登录的是一个普通帐号,下载链接将变成“Download Private Agent” 下载的agents包中的配置只能当前用户使用

下载后,把agent放在服务器上,解压
Alt text

启动前检查 ulimt -a ,调整配置让其运行更多的线程,执行bash run_agent.sh 启动agent。
Alt text

安装monitor

nGrinder的Monitor是agent的一个子集,用于收集系统相关数据(比如CPU, MEM and Network)

agent在controller页面中直接下载
Alt text

下载后,把monitor放在服务器上,解压
Alt text

执行bash run_monitor.sh启动monitor
Alt text

安装完测试

nGrinder运行一个压力测试只需3步:

  1. 编写测试脚本
  2. 场景设计:配置并发用户数,执行时间,资源监控
  3. 场景执行,结束后自动生成报告

这里测试一个简单的get请求:http://192.168.42.32:82/sourcing/tradeservice/quotation-request.html

第一步,编写测试脚本

登录ngrinder,输入url,点击开始测试
Alt text

第二步,场景设计

填写相应场景信息,如并发用户数,场景执行时间等
Alt text

第三步,场景执行

点击保存并运行按钮,开始场景执行
Alt text


参考文章:
利用nGrinder进行性能测试操作指南
性能测试工具 nGrinder 项目剖析及二次开发