文档章节

nGrinder在大型组织中的实际布署和应用

nGrinderChina
 nGrinderChina
发布于 2013/03/12 18:28
字数 1757
阅读 1626
收藏 5

原文 : nGrinder Real Deployment in the Large Organization By JunHo.Yoon

    我们的公司,NHN,拥有多个大型的产品。其中一个是韩国最受欢迎的搜索门户网站NAVER,拥有超过5千万的用户。另一个是“Line”,这是目前最受欢迎的移动通信工具,注册用户超过1亿。另外还有涉及网络应用和游戏等类型的一些产品。除了这些,我们还开发了多种多样的开源平台产品,包括CUBRID-支持高可用性的开源关系数据库管理系统-nGrinder Wiki网站就包含在CUBRID的Wiki中:)。在NHN公司内部有1000多名开发者,他们总是努力实现那些杰出的想法并转化成产品,并使这些产品更具扩展性。

    为了使这些产品更稳定,速度更快,从2011开始我们集中地使用nGrinder。目前我们在公司内部运行了多个nGrinder实例。但是我们要求的员工从最大的实例开始使用,它是由5个controller,40个agent以及5个不同的IDC(互联网数据中心)组成的。 我们有官方的DNS名称:http://ngrinder.nhncorp.com(只有NHN员工可以访问),在这5个控制器是指向L4(负荷平衡器)的。怎么做才能布署这样大型的nGrinder系统?请看Controller Clustering Guide

 <nGrinder deloyment across IDCs>
 

    大部分IDC是位于韩国的,唯一例外的一个位于新加坡。一个nGrinder Controller和Agent的通信速度B/W并不高,这样我们就可以把所有的controller放在一个韩国的IDC而把Agent分散到每个IDC中。我们还在nGrinder系统中部署了的SSO插件和网络溢出插件,所以每个人都可以随时访问nGrinder而无需额外的登录步骤,还可以控制可能会导致巨大的网络流量的异常测试执行。我们的nGrinder SSO插件从nGrinder管理中免除了用户管理的开销。它与SiteMinder共同起作用,如果用户不存在,当用户用他/她的SSO帐户登录时,便会创建一个新的用户帐号。

    目前我们在每个IDC的实际服务区域,使用的是10G主干网。但我们的开发区域只有3Gbps, B/W模式的IDC的带宽甚至更小。 因此,我们估计如果nGrinder产生了大量的网络流量,特别是在每个网络边缘的时候, 会使该网络中另外的系统服务不正常。 这样的情况在我们之前使用Performance Center的时候的确发生过。所以我们设置了网络溢出插件,使每个test最大使用1Gbps流量。如果一个test占用贷款超过了1Gbps,这个插件会自动强制停止它。如果开发者需要运行产生超过1Gbps流量的test,我们会请他在与目标机所处的相同的交换机范围内中安装独立的nGrinder controller和agent。他安装一个自己的nGrinder实例一般只需要1小时。

    我们通常只允许每个用户在没有额外的步骤的情况下使用5个agent。 这使得agent最大化地被多个用户所分享。我们观察到90%的test在10分钟内结束。一些IDC拥有10个agent。这意味着至少个测试可以同时运行。如果用户需要更多的agent,我们建议他/她安装用户属于自己的agent而不是增加限制的数量。我们不仅使用这些系统的方法,我们也用比较人性化的方式促进nGrinder使用。

     有一个nGrinder专职的工程师,会持续观察所有的测试(他的名字叫乔.JiWon,“JiWon”在韩语中的意思是“支持”,他花约30%的工作时间在这上面。)。这里的大多数开发者是Java工程师,并且没有写Python代码的经验。他正在做事情就是帮助开发人员避免在脚本编写中感到茫然。 他拥有开启了超级用户权限的帐户,可以不必请求附加权限就可以看到nGrinder中所有的test,并且能够运行其他用户的脚本。

      所以,每当红色球(运行失败标识)出现在nGrinder性能test列表视图中,像下面这样,JiWon会点击脚本并验证它们,以找出用户做错了什么。当他发现线索,他就会用我们的内部通信工具与用户联系。这使得nGrinder用户仅在2~3次失败的尝试之后,就能够写出正确的脚本。有时,一些开发者说“离它(脚本)远点”, 但大多数开发者都会说“谢谢”,因为在他们忙得不可开交的时候,这小小的帮助能减少他们的开销。

 <It's time for JiWon to help this guy!!>

   如我先前所述,我们在所有的互联网数据中心预先部署了40个nGrinder Agent,并且安装了一些插件,让用户能够容易且安全地运行他们的测试。因此,当他们开始运行性能测试时,nGrinder用户不需要联系nGrinder管理员。开发者能够通过访问nGrinder URL,随时运行他们的测试。 这最终导致了一个跟我们之前经验完全不同的用户体验。

    如我之前所说的,我们曾经使用过Performance Center。在那个时候,开发者需要提前登记一个特定的时间段,因为PerformanceCenter在特定的时间内只允许一个测试,并且用户需要下载和安装一大堆的应用。而现在一切变得不同了,一切都是基于网络的,使用nGrinder是不需要预约的。这使得整个性能测试的成本大大降低了,而且许多开发者已经开始将nGrinder视为像Eclipse一样的日常开发工具中的一个。现在大多数的产品进行检测,不仅在在开发阶段的结束也在发展阶段ngrinder中间。我们观察到同时最多有3个test在同时运行,平均每10分钟就有1个test被启动。鉴于性能测试工具通常是在项目的最后阶段才被使用的情况来看,我们可以说这样的执行率是相当令人印象深刻的。

    

      <active nGrinder use in NHN. 2013-01-13 was Sunday.>

     这就是我们如何在大型组织范围内应用nGrinder的。我们相信,通过分享我们的经验,能够使得任何产品变得更加的稳定。欢迎给我们提供任何的意见。 请使用这个邮件列表给我们写信。期待你的体验反馈!

 nGrinder Home : http://www.nhnopensource.org/
 nGrinder Demo : http://ngrinder-demo.nhnopensource.org(登陆账户: user/user)

   


© 著作权归作者所有

共有 人打赏支持
nGrinderChina
粉丝 11
博文 11
码字总数 9715
作品 0
朝阳
项目经理
私信 提问
nGrinder-世界上最简单但潜力无限的压力工具

此次此刻,我很高兴能把nGrinder-也许是这世界上最简单但潜力无限的压力工具介绍给大家。我是Emily, 来自NDT(nGrinder开发团队)的发言人。 下面这些问题正在烦扰着你么? -想要优化你的网...

nGrinderChina
2013/01/31
0
0
nGrinder 3.3 发布,Web 压力测试工具

nGrinder 3.3 发布,这是主要版本发布,主要包括功能增强,新特性和 bug 修复。nGrinder agent 和 controller 都可以升级到 3.3 版本。 主要更新内容如下: 单一可执行包 修复了 controller...

oschina
2014/02/12
4.7K
1
使用nGrinder实现性能测试驱动开发

来自 : Performance Driven Development 作者 : Juno.Yoon 使用nGrinder实现性能测试驱动开发 在许多项目中,开发者们通常不会在项目中期就考虑到各种非功能性要点。他们经常只是专注于功能...

nGrinderChina
2013/03/06
0
0
在eclipse代建nGrinder开发环境

本文介绍如何用eclipse搭建nGrinder开发环境! 首先向大家推荐 Spring Tool Suite (STS) 作为开发平台,因为它很好的集成Git和Maven等工具,让开发项目变得更方便快捷。 下面开发搭建nGrinde...

Matt_MYB
2013/02/01
0
4
nGrinder 3.1 发布-最简单而潜力无限的压力工具

此次此刻,我很高兴能把nGrinder-也许是这世界上最简单但潜力无限的压力工具介绍给大家。我是Emily, 来自NDT(nGrinder开发团队)的发言人。 下面这些问题正在烦扰着你么? -想要优化你的网...

nGrinderChina
2013/02/01
8.6K
25

没有更多内容

加载失败,请刷新页面

加载更多

HTTP 304状态码

客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified ...

Jack088
22分钟前
2
0
MyBatis学习笔记(二)

mybatis执行过程架构图 1、mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。 mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql...

梦想_与_现实
27分钟前
0
0
分布式锁简单入门以及三种实现方式介绍

分布式锁简单入门以及三种实现方式介绍

zbbmaster
37分钟前
2
0
PHP接收前端传值各种情况整理

PHP接收前端传值各种情况整理 服务端代码: header('Access-Control-Allow-Origin:*');var_dump($_POST);exit; 情况 1) 传null $.post('http://xxxxx.xx/index.php', { "test": null}......

SSSWIIILLL
今天
5
0
利用神器BTrace 追踪线上 Spring Boot应用运行时信息

概述 生产环境中的服务可能会出现各种问题,但总不能让服务下线来专门排查错误,这时候最好有一些手段来获取程序运行时信息,比如 接口方法参数/返回值、外部调用情况 以及 函数执行时间等信...

CodeSheep
今天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部