下一个 release 准备小长假后就要 go-live 。全部的測试 case 都 cover 过了。但还未进行过压力測试,有点不放心,刚好过节期间家人都回家去了,假期最终能够抽点时间压測一把。

Apache ab 压測

之前用过一些压力測试工具比方 loadrunner。 Jmeter,感觉都太重,想要使用不是软件须要注冊就是使用起来非常不得心应手,这次灵光一动。想到直接使用 ab + OneAPM 进行測试,ab 的全称是 ApacheBench , 是 apache http server 自带的一个測试工具。专门用于 HTTP Server 的 benchmark testing,能够同一时候模拟多个并发请求。

公司的开发者也在用它作一些測试,看起来也不错,非常easy,也非常easy使用。能够对你的 Web 网站进行压力測试,非常小。使用起来非常easy。

假设你已经安装了 apache。那么在 <apache>/bin 文件夹就能找到 ab,输入ap –help `, 里面简单几个选项细致读一下,非常快就能上手进行測试。

官方使用文档:https://httpd.apache.org/docs/2.4/programs/ab.html

OneAPM

这个就不用多说了,性能监控软件,怎样使用參看下官网的 guide,我分别在不同的平台上都试过接入 OneAPM,比方 node.js。ruby,php,java,使用起来挺简单方便的。

环境: 内网測试server
语言: Ruby
Framework: ror
数据库: MongoDB

总共进行了两轮压測, 測试方式及结果:

  • 第一轮: 每秒大概 30 个并发, 单页面訪问
  • 第二轮:并发量每秒提升到 100。分别訪问 4 个主页面

使用 ab 进行測试的方式:

ab -n 1000 -c 30 <your url>

-n 是指总的 request 数量。-c 是指同一时间并发量

下面是在加入了OneAPM Ruby agent之后,使用 apache ab 压測结果。

整体拓扑

OneAPM 通过拓扑图来展示应用的端到端调用关系、应用server与数据库、外部 服务的调用关系以及应用之间的调用关系。

同一时候。通过在拓扑图中将对应模块标记成不同颜色。

由于仅仅是压測,就没有在測试环境部署相关的后台任务。也没做集群以及 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

utm_source=Community&utm_medium=Article&utm_term=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Apache%20ab%20%E4%BB%A5%E5%8F%8A%20OneAPM%20%E8%BF%9B%E8%A1%8C%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95%EF%BC%9F&utm_content=wk328-403&utm_campaign=CiArti&from=jscwdltm">官方技术博客

本文转自 OneAPM 官方博客

怎样使用 Apache ab 以及 OneAPM 进行压力測试?的更多相关文章

  1. 如何使用 Apache ab 以及 OneAPM 进行压力测试?

    下一个 release 准备小长假后就要 go-live ,所有的测试 case 都 cover 过了,但还未进行过压力测试,有点不放心,刚好过节期间家人都回家去了,假期终于可以抽点时间压测一把. A ...

  2. php性能优化(一)压力測试工具篇

    ab使用 Apache附带的压力測试工具ab,很easy使用,而且全然能够摸你各种条件对Webserver发起測试请求.ab能够直接在Webserver本地发起測试请求.这对于须要了解server的处 ...

  3. ubuntu 14.04 LTS 安装webbentch压力測试工具

    近期在做 压力測试工具,除了apache的ab測试工具外,发现webbentch工具也不错,这里简介下这两个工具. 一.webbentch安装: wget http://blog.s135.com/s ...

  4. CentOS6.5 64位站点压力測试工具webbench

    在Apache中有自带的ab命令能够測试服务的压力,而nginx没有自带的命令,必需要採用第三方软件来測试.今天就简介一下webbench对nginx的压力測试,压力測试是对系统管理员和运维人员必须的 ...

  5. webbench压力測试工具

    apache的測试工具ab 在并发100个以上后会出现错误.网上也有非常多改ab源代码来解禁的. 只是还是推荐一款比較好用的压力測试工具webbench wget http://blog.zyan.c ...

  6. 学习使用Jmeter做压力測试(一)--压力測试基本概念

    一.性能測试的概念         性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...

  7. MySQL Study之--MySQL压力測试工具mysqlslap

    MySQL Study之--MySQL压力測试工具mysqlslap 一.Mysqlslap介绍     mysqlslap是MySQL5.1之后自带的benchmark基准測试工具,类似Apache ...

  8. Android开发之按键、触摸屏和手势输入专业压力測试方法

    按键输入.触摸屏输入和手势笔画输入等功能是Android开发的基本功能.其稳定性和健壮性对移动应用系统开发很重要.按键.触摸屏和手势输入专业压力測试方法能够使用Monkey,相应用程序进行压力測试,检 ...

  9. 站点系统压力測试Jmeter+Badboy

    近期项目须要压力測试,因此搜了几款试用,首选的是LoadRunner这款大名鼎鼎的測试软件: LoadRunner11 下载请猛戳这里 传送门LoadRunner破解文件 下载请猛戳这里 传送门Loa ...

随机推荐

  1. java byte数组与String互转

      java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String ...

  2. BackBone.js之Router

    一.前言 有一段时间没有写随笔了,可能是最近的烦心事有点多.不倾诉了,开始我们的主题吧,以前做过一个web的聊天平台,js的代码足足有2k行. 虽然是在一个星期就完成了,但是想想还是不服.一定有一种更 ...

  3. [转载]Windows x64下配置ffmpeg的方法

    ffmpeg简介 FFmpeg 是一款跨平台的,对视频.音频进行录制.转换.播放的命令行形式软件,它使用的是 libavcodec 编解码器.FFmpeg 官方网站是 http://ffmpeg.or ...

  4. java第三节 面向对象(上)

    //第三讲 //面向对象(上) /* 理解面向对象的概念 面向过程 在一个结构体中定义窗体的大小,位置,颜色,背景等属性,对窗口操作的函数窗口本身的定义没有任何关系 如HideWindow, Move ...

  5. Arduino和C51之串口通信

    技术:51单片机.Arduino.串口通信   概述 本文主要讲解串口通信技术的使用方法,并通过串口点灯实验介绍了51单片机和Arduino串口的使用,为初学者学习串口知识提供帮助 详细 代码下载:h ...

  6. 基于RESTful API 怎么设计用户权限控制?

    前言 有人说,每个人都是平等的:也有人说,人生来就是不平等的:在人类社会中,并没有绝对的公平,一件事,并不是所有人都能去做:一样物,并不是所有人都能够拥有.每个人都有自己的角色,每种角色都有对某种资源 ...

  7. 利用Git进行团队协作

    前言: 这里简单介绍一下Git的历史. 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了 ...

  8. Huginn部署到 Heroku

    折腾了几个小时,现在记录下安装步骤 1.本机Win10,放弃本地安装,官网建议也是, 2.安装虚拟机,装ubuntu系统 3.更换国内源(包括apt和gem,bunlde)ruby中国 4.注册her ...

  9. Android中如何让DialogFragment全屏(DialogFragment fullscreen)

    这个问题很让人纠结,因为我要在popopwindows里面使用fragment,但是在popopwindows里面找不到它的父控件,于是转战使用DialogFragment,但是让它全屏是一件很头疼的 ...

  10. 递归查询构造jquery tree

    1 现在有如下的一张表: CREATE TABLE [dbo].[ThemeCategory] ( [ID] [int] NOT NULL, [ThemeCategoryName] [nvarchar ...