nGrinder 架构简介

nGrinder 架构简介
nGrinder 的 Groovy 脚本使用指南(Groovy 脚本结构)
nGrinder 的 Groovy 脚本使用指南(Groovy maven 结构)
nGrinder 的 Groovy 脚本使用指南(导入 Groovy Maven 工程到 IntelliJ)
nGrinder 的 Groovy 脚本使用指南(HTTP 请求详解)

nGrinderr(version: 3.4.1)是NAVER(韩国最大互联网公司NHN旗下搜索引擎网站)开源的性能测试工具,直接部署成web服务,支持多用户使用,可扩展性好,可自定义plugin

哲学

  • Reliability over Accuracy
  • TPS over VUser
  • 代码总是比GUI编辑器好
  • 不限制
  • 正确的使用的条件下,文件系统快于数据库
  • 约定优于配置
  • Open Closed policy by Plugin Model
  • 一键式安装
  • Need to add code? Remove same amount of code first.

总体架构

nGrinder 是一款在一系列机器上执行 Groovy 或 Jython 测试脚本的应用,内部引擎是基于 Grinder。 nGrinder 使用 controller 和 agent 分别包装了 Grinder 的 console 和 agent ,而且扩展了多种功能使其能够支持并发测试。
这里写图片描述
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 从 3.1 版本开始支持 controller 集群

非集群模式

这里写图片描述
1. nGrinder 使用一个内嵌的 svn 服务管理脚本文件,svn 的库存储于 ${NGRINDER_HOME} 目录
2. nGrinder 使用 EhCache 提升从DB和SVN库的数据检索性能。
3. nGrinder 使用 Spring Security 保护系统安全,同时使用 Atlassian Plugin 框架进行扩展

集群模式

这里写图片描述
1. 集群中所有的 controller 共享同一个 DB(数据库) 和 文件系统。所有的 nGrinder controller 都要指定相同的 ${NGRINDER_HOME} 通过 NFS(网络文件系统)共享的目录。
2. 每个 controller 可以有它自己的特殊配置和日志输出目录。这些信息将会被保存在每个 controller 的 ${NGRINDER_EX_HOME} 中。
3. 所有的 controller 复制彼此的 EhCache 数据(EhCache 的集群模式)确保 controller 集群中看见的都是一样的数据。

每个 controller 都可以向 nGrinder 提供 相同的 wen 内容服务,但是会根据 region 处理不同的测试集。默认情况下,我们没有提供会话集群。所以你可能遭遇到登陆问题,因为会话存储在一个 controller 并没有复制到其他的 controller 。你可能需要参考 Tomcat 的会话集群配置,或者 L4 的粘性会话配置。如果你不是这方面的专家,请只让用户链接同一个 controller,这样简单些。:-)

如何配置集群模式呢?
查看 简单的集群模式指南
查看 高级的集群模式指南

技术栈

客户层Client Tier

Bootstrap

Bootstrap-slider

Jquery

Jquery Validate

Datatables

Select2

JqPlot

CodeMirror

控制层

FreeMarker

Spring Security

Spring MVC

GSon

SVNKit Dav

服务层

The Grinder

Spring

EhCache

数据层

Spring Data

H2

Cubrid

Liquibase

SVNKit

阅读更多
想对作者说点什么?
相关热词

博主推荐

换一批

没有更多推荐了,返回首页