文档章节

用Ngrinder轻松进行性能测试

anglix
 anglix
发布于 2015/11/28 21:03
字数 485
阅读 1189
收藏 11
点赞 2
评论 0

Ngrinder入门

安装

基础环境

  • 以 Ngrinder-3.2.3 为例,建议用 JDK-1.6:

    mkdir -pv /data/{app,log}
    wget -P /data/log dl.higkoo.com/{jdk1.6.0_45.tgz,ngrinder-controller-3.2.3-with-tomcat.tar.gz,ngrinder-core-3.2.3-agent-package.tar.gz}
    tar -C /data/app -zxvf /data/log/jdk1.6.0_45.tgz
    tar -C /data/app -zxvf /data/log/ngrinder-controller-3.2.3-with-tomcat.tar.gz
    tar -C /data/app -zxvf /data/log/ngrinder-core-3.2.3-agent-package.tar.gz
    ln -s /data/app/jdk1.6.0_45/bin/java /usr/sbin/java

控制台管理

  • 控制端是 tomcat 启动的服务(默认端口 8080 / 默认帐号 admin/admin):

    export JAVA_HOME=/data/app/jdk1.6.0_45
    /data/app/apache-tomcat-6.0.35/bin/startup.sh

负载生成器

  • 启动的第1个参数填控制台的IP地址或域名

    export JAVA_HOME=/data/app/jdk1.6.0_45
    /data/app/ngrinder-core-3.2.3/run_agent_bg.sh 192.168.10.31

编写测试脚本

  • 如下脚本为常用 GET、POST 带参数和自定义HTTP头的方法:

示例脚本

private static final String URL = "http://api.higkoo.com:9080/status";// 请求使用的URL
private static final NVPair[] PARAMS = [
	new NVPair("color", "Magic"),
	new NVPair("expect", "Miracle"),
] as NVPair[]; // 请求的参数列表
private static final NVPair[] HEADERS = [ 
	new NVPair("Cookie", "date=20151128;path=/"),
	new NVPair("User-Agent", "nGrinder"),
] as NVPair[];// 自定义头信息
@Test
public void test(){
	HTTPResponse result = request.GET(URL, PARAMS, HEADERS) // request.POST(URL, PARAMS, HEADERS)
	if (result.statusCode == 301 || result.statusCode == 302) {
		grinder.logger.warn("Warning. The response code was {}.", result.statusCode); 
	} else {
		assertThat(result.statusCode, is(200));
	}
}

执行压测

  • 测试过程要对和个服务器的资源使用情况有所了解,下图展示过程中 控制端、被测试的服务端,以及可爱的肉鸡的 top图:

资源使用图

  • 不断增加虚拟用户数(15台24核32G的服务器),结果如下:

测试结果

  1. 本次测试以nginx状态页为例
  2. 虚拟用户乘10倍增加,响应时间几乎也同级增加
  3. 然而虚拟用户数增加,每秒响应请求数并没有质的增加
  4. 当虚拟用户数过6万时,服务器出现拒绝访问

[Sat Nov 28 19:04:46 2015] TCP: TCP: Possible SYN flooding on port 80. Sending cookies. Check SNMP counters.

附加信息

  • 然而 LoadRunner 并不支持 Debian 系统:

LoadRunner安装

© 著作权归作者所有

共有 人打赏支持
anglix

anglix

粉丝 31
博文 35
码字总数 17615
作品 0
珠海
系统管理员
服务器性能测试--Ngrinder的简介

Ngrinder入门 安装 基础环境 以 Ngrinder-3.2.3 为例,建议用 JDK-1.6: mkdir -pv /data/{app,log} wget -P /data/log dl.higkoo.com/{jdk1.6.0_45.tgz,ngrinder-controller-3.2.3-with-tom......

Bony ⋅ 2016/12/18 ⋅ 0

使用nGrinder实现性能测试驱动开发

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

nGrinderChina ⋅ 2013/03/06 ⋅ 0

nGrinder 安装指南

nGrinder 由两个模块组成,其运行环境为 Oracle JDK 1.6 nGrinder controller web 应用程序,部署在Tomcat 6.x 或更高的版本 nGrinder Aggent Java 应用程序 下载安装程序如下: http://sou...

Matt_MYB ⋅ 2013/01/18 ⋅ 1

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

原文 : nGrinder Real Deployment in the Large Organization By JunHo.Yoon 我们的公司,NHN,拥有多个大型的产品。其中一个是韩国最受欢迎的搜索门户网站NAVER,拥有超过5千万的用户。另一个...

nGrinderChina ⋅ 2013/03/12 ⋅ 0

性能测试工具nGrinder

nGrinder-性能测试工具 nGrinder是一款利用JAVA构建的网页端性能测试工具。先放张截图: 特点 安装包小,易于安装部署,网页操作; 默认支持3000个虚拟用户,支持进程/线程方式测试并发性能;...

一点灵犀 ⋅ 2016/05/31 ⋅ 0

使用nGrinder执行socket.io应用负载测试

原文 : Using nGrinder to perform load test for a socket.io app by Mavlarn nGrinder不仅可以用来测试通常的Web应用程序,也可以用于JDBC,Web服务或者像socket.io所提供的这样的实时应用...

nGrinderChina ⋅ 2013/03/15 ⋅ 0

Web压力测试系统--nGrinder

nGrinder是一个基于 Grinder 开发的一个非常易于管理和使用的性能测试系统。 它是由一个controller和连接它的多个agent组成,用户可以通过web界面管理和控制测试,以及查看测试报告,control...

nGrinder ⋅ 2012/03/16 ⋅ 3

nGrinder 集群模式

在nGrinder 3.1 版本,Controller加入集群模式,在不同区域部署对应的Controller,同时每个区域可以有多个Agent。这样做可以使资源更好的分配性能测试也能达到最佳的效果。 nGrinder 单一应用...

Matt_MYB ⋅ 2013/01/23 ⋅ 0

Web Service性能测试工具比较

背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒)。以微信服务器为例,每个用户用独立的登录token,做各种操...

超爱fitnesse ⋅ 2015/07/26 ⋅ 5

开源nGrinder-3分钟学会世界上最简单但潜力无限的压力工具

nGrinder运行一个压力测试只需3步启动1个test: 1)Python脚本编写测试场景;2)配置虚拟用户数,周期,步长控制,资源监控;3)运行结束报告自动生成,TPS/MeanTime/Errors, 监控CPU/Memor...

nGrinderChina ⋅ 2013/02/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 11分钟前 ⋅ 0

spring RESTful

spring RESTful官方文档:http://spring.io/guides/gs/rest-service/ 1. 可以这么去理解RESTful:其实就是web对外提供的一种基于URL、URI的资源供给服务。不是一个原理性知识点。是一个方法论...

BobwithB ⋅ 13分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 16分钟前 ⋅ 0

@Conditional派生注解

@Conditional派生注解(Spring注解版原生的@Conditional作用) 作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效; @Conditional扩展注解 作用(判...

小致dad ⋅ 17分钟前 ⋅ 0

适配器模式

适配器模式 对象适配器 通过私有属性来实现的类适配器 通过继承来实现的接口适配器 通过继承一个默认实现的类实现的

Cobbage ⋅ 20分钟前 ⋅ 0

Java 限流策略

概要 在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速...

轨迹_ ⋅ 24分钟前 ⋅ 0

GridView和子View之间的间隙

默认的情况下GridView和子View之间会有一个间隙,原因是GridView为了在子View被选中时在子View周围显示一个框。去掉的办法如下: android:listSelector="#0000" 或 setSelector(new ColorDra...

国仔饼 ⋅ 27分钟前 ⋅ 0

idea插件开发

1 刷新页面要使用多线程 2 调试要使用restart bug 不要去关闭调试的idea 否则再次启动会卡住

林伟琨 ⋅ 27分钟前 ⋅ 0

Java 内存模型

物理机并发处理方案 绝大多数计算任务,并不是单纯依赖 cpu 的计算完成,不可避免需要与内存交互,获取数据。内存要拿到数据,需要和硬盘发生 I/O 操作。计算机存储设备与 cpu 之间的处理速度...

长安一梦 ⋅ 34分钟前 ⋅ 0

思路分析 如何通过反射 给 bean entity 对象 的List 集合属性赋值?

其实 这块 大家 去 看 springmvc 源码 肯定可以找到实现办法。 因为 spirngmvc 的方法 是可以 为 对象 参数里面的 list 属性赋值的。 我也没有看 具体的 mvc 源码实现,我这里只是 写一个 简...

之渊 ⋅ 55分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部