如何使用 Apache ab 以及 OneAPM 进行压力测试?
下一个 release 准备小长假后就要 go-live ,所有的测试 case 都 cover 过了,但还未进行过压力测试,有点不放心,刚好过节期间家人都回家去了,假期终于可以抽点时间压测一把。
Apache ab 压测
之前用过一些压力测试工具比如 loadrunner, Jmeter,感觉都太重,想要使用不是软件需要注册就是使用起来很不得心应手,这次灵光一动,想到直接使用 ab + OneAPM 进行测试,ab 的全称是 ApacheBench , 是 apache http server 自带的一个测试工具,专门用于 HTTP Server 的 benchmark testing,可以同时模拟多个并发请求。公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用。可以对你的 Web 站点进行压力测试,非常小,使用起来很简单。
如果你已经安装了 apache,那么在 <apache>/bin 目录就能找到 ab,输入ap --help `, 里面简单几个选项仔细读一下,很快就能上手进行测试。官方使用文档:https://httpd.apache.org/docs/2.4/programs/ab.html

OneAPM
这个就不用多说了,性能监控软件,如何使用参看下官网的 guide,我分别在不同的平台上都试过接入 OneAPM,比如 node.js,ruby,php,java,使用起来挺简单方便的。
| 环境: | 内网测试服务器 |
| 语言: | Ruby |
| Framework: | ror |
| 数据库: | MongoDB |
总共进行了两轮压测, 测试方式及结果:
- 第一轮: 每秒大概 30 个并发, 单页面访问
- 第二轮:并发量每秒提升到 100,分别访问 4 个主页面
使用 ab 进行测试的方式:
ab -n 1000 -c 30 <your url>
-n 是指总的 request 数量,-c 是指同一时间并发量
以下是在添加了OneAPM Ruby agent之后,使用 apache ab 压测结果。
总体拓扑
OneAPM 通过拓扑图来展示应用的端到端调用关系、应用服务器与数据库、外部 服务的调用关系以及应用之间的调用关系。同时,通过在拓扑图中将相应模块标记成不同颜色。
由于只是压测,就没有在测试环境部署相关的后台任务,也没做集群以及 LA , 在我们的 prod 环境中,是有座 cluster 及 Load balance。

总览
30 并发 /s 的平均响应时间在 200ms 左右,而一旦提升到 100 并发 /s,响应时间瞬间飙升到 800~900ms 左右,对于一个目前 pv 还不算高的网站,还可以接受,但也还有提升空间。


Web 事务

数据库
MongoDB 在单机压力测试下表现还可以,如果说整体上整个站点要在优化性能的话,主要就是在 framework 上。

RubyVM
这个对于实时监控挺有用,但是这个仅仅是适用 vm 以及 ruby gc 的一些统计,如果能加入对 ruby container 的监控就更好了,因为我遇到过很多次,web 缓慢或者瘫痪的时候,几次都是因为 ruby container 内存溢出,导致宕机。但是对这块的监控就比在 ruby 或者 ror 中加探针要复杂很多了。

结论
OneAPM 除了用于定位应用线上的问题,还配合使用 ab 压测在项目上线前提早预知一些可能的性能瓶颈,OneAPM 的 Dashboard 就是一个很好的压测结果报告,压测前后的性能差异一目了然,不需在通过一些命令再去对比 Response time 之类的数据,总之省力很多。
比较传统的方式是下图这样对比性能,编辑 bench 了一个 url 之后得到输出结果:

客观的从纯性能的角度出发,在生产环境中,Ruby 还是只适合 Small Business 。对与压力较高的服务或应用,就必须投入大量额外的硬件资源才能维持。
最后的最后:不要在正式环境做压力测试!!!
本文系国内 ITOM 行业领军企业 OneAPM 经授权转载自 cnode 社区。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
如何使用 Apache ab 以及 OneAPM 进行压力测试?的更多相关文章
- 怎样使用 Apache ab 以及 OneAPM 进行压力測试?
下一个 release 准备小长假后就要 go-live .全部的測试 case 都 cover 过了.但还未进行过压力測试,有点不放心,刚好过节期间家人都回家去了,假期最终能够抽点时间压測一把. A ...
- ubuntu中安装apache ab命令进行简单压力测试
1.安装ab命令 写道 apt-get install apache2-utils 2.ab命令参数说明. 写道 Usage: ab [options] [http[s]://]hostname[:p ...
- Webbench、ab命令:做压力测试的工具和性能的监控工具
DDOS攻击:???DDOS概述:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目 ...
- 使用apache的ab对页面进行压力测试
ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 我们可以模拟100个并发用户,对一个页面发送1000个请求 ./ab -n1000 -c100 ...
- 使用Apache Server 的ab进行web请求压力测试
参考:http://www.cnblogs.com/spring3mvc/archive/2010/11/23/2414741.html 自己写代码经常是顺着逻辑写下去,写完后run一下,ok就玩完事 ...
- 使用ab进行页面的压力测试
ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 参数说明及示例 我们可以模拟100个并发用户,对一个页面发送1000个请求 输入命令:ab - ...
- Apache benchmark对网站进行压力测试
Apache Benchmark下载:http://down.tech.sina.com.cn/page/3132.html ab 的全称是 ApacheBench , 是 Apache 附带的一个小 ...
- ab参数详解 – 压力测试
命令参数: -n requests Number of requests to perform //在测试会话中所执行的请求个数.默认时,仅执行一个请求 -c concurr ...
- 用AB对Webservice做压力测试
AB工具下载 AB工具介绍见 web压力测试工具 下载ab工具后放到任意目录下,从命令行打开ab.exe 使用以下命令测试Webservice ab -c 100 -n 1000 -p zip.txt ...
随机推荐
- SCP服务实现Linux交互
SCP服务实现Linux交互 在实际工作中,我们可以使用scp服务器进行Linux与Linux之间的信息交互. 基本指令: scp 本地文件 远程文件 scp ...
- Spring AOP整理
示例展示 AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充.AOP之所以能得到广泛认可,主要是因为它将应用系统拆分分了 ...
- C++ Bitsets
C++ Bitsets给程序员提供一种位集合的数据结构.Bitsets使用许多二元操作符,比如逻辑和,或等. Constructors 创建新bitsets Operators 比较和赋值bitset ...
- photoshop如何把阴影分离开(让阴影单独成为一个图层)
作图的时候经常会用到,给图片加个投影,但有时还满足不了自己的需要,于是可以把投影分离开来单独操作投影. 图层->图层样式->创建图层 有时还需要滤镜->模糊 一下 哈哈,下次忘了来翻 ...
- 设置textview背景色为透明
UITextView *textView=[[UITextView alloc]initWithFrame:CGRectMake(20, 40, 150, 170)];//初始化并设置大小 textV ...
- “==”,比较的是引用 “equals方法”比较的是具体内容
package com.java1234.chap03.sec08; public class Demo2 { public static void main(String[] args) { //“ ...
- Linux磁盘与文件系统概念理解
磁盘级别概念 这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起.如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每 ...
- Hbase 0.98集群搭建的详细步骤
准备工作 Hbase的搭建是依赖于Hadoop的,Hbase的数据文件实际上存储在HDFS文件系统中,所以我们需要先搭建hadoop环境,之前的博文中已经搭建过了(详见http://www.cnblo ...
- vs2012用wpf制作透明窗口中报错的解决方案
在开发wpf项目时,需要调用外部com组件,同时需要制作透明窗口,于是问题出现了,当我们在设置 AllowsTransparency="True"后,com组件显示不出来了,只有透 ...
- Jquery LigerUI框架学习(一)
ligerUI框架是一个很丰富的后台框架模板,具有简洁大方的后台样式框架,还有很多灵活的控件,方便开发人员使用: 把昨天学习的成功拿出来供大家学习学习: 首先我们要去ligerUI官网下载Jquery ...