基于phantomJS实现web性能监控

转载,原文链接http://www.webryan.net/2013/02/web-page-test-based-on-phontomjs/

1、web性能监控背景描述

上期分享的《Web性能监控自动化探索之路–初识WebPageTest》从依赖webpagetest的角度给出了做性能日常检查的方案,但由于依赖结构相对复杂我们需要给出更简单的解决方案。测试同学没有快速投入的主要原因也是语言和维护成本相对比较大。但解决方案是多种多样的。那么我们再看下这个需求的本质:针对内外网环境需要定期对站点进行yslow和page speed检查,以保证在持续开发过程中保证质量。

对比webpagetest,我们再反思下手里的资源和特点:

1、对于固定的HTML结构,我们不需要多浏览器支持亦可以得到yslow和page speed等结论;

2、webkit是开源的;

3、pagespeed和yslow都是有开源sdk的;

那么我们的工作就变得很简单了,打包webkit实现一个不需要展示界面的程序(当然需要界面信息可以随时从UI线程里读取)生成需要的数据文件,并生成报表即可。流程简化如下:

1、通过QT或者phantomJS等webkit打包工具获取HTTP请求数据流HAR文件(这里采用phantomJS);

2、通过HAR文件来生成请求瀑布图、yslow报告和page speed报告;

3、通过保存HAR文件来生成站点的趋势;

4、通过修改hosts文件来控制内网测试环境;

2、PhantomJS介绍

PhantomJS(http://phantomjs.org/)是支持JavaScript API的无界面、运行在服务端的webkit环境。它通过JavaScript和CoffeeScript控制webkit的各个模块,比如CSS Selector,JSON,Canvas、SVG和HTTP网络等等。它非常适合:

1、用来做服务端的网站测试,包括Qunit,Jasmin等等

2、屏幕截图抓取

3、网页DOM操作

4、网络情况监控

它提供了很多的examples,其中netsniff.js就是用于监控网络请求并生成HAR文件的。,如图所示:

3、HAR文件(HTTP Archive Specification)

HAR(HTTP Archive Specification),是一个用来储存HTTP请求/响应信息的通用文件格式,基于JSON。这个格式的出现可以使HTTP监测工具以一种通用的格式导出所收集的数据,这些数据可以被其他支持HAR的HTTP分析工具(包括Firebug,httpwatch,Fiddler等)所使用,来分析网站的性能瓶颈。目前HAR规范最新版本为HAR 1.2。HAR文件必须是UTF-8编码,有无BOM无所谓。

HAR数据结构:

一个HAR文件就是一个JSON对象,如下:

 1 {"log": {
 2
 3 "version" : "1.2″,
 4
 5 "creator" : {},
 6
 7 "browser" : {},
 8
 9 "pages": [],
10
11 "entries": [],
12
13 "comment": ""
14
15 }
16
17 }
  • version [string] – 版本,默认为1.1。
  • creator [object] – 创建HAR文件的程序名称和版本信息。
  • browser [object, 可选] – 浏览器的名称和版本信息。
  • pages [array, 可选] – 页面列表,如果应用不支持按照page分组,可以省去此字段。
  • entries [array] – 所有HTTP请求的列表。
  • comment [string, 可选] (new in 1.2) – 注释。

注:每个页面对应一个<page>对象,每个HTTP请求对应一个<entry>对象。如果HTTP的监测分析工具不能把请求按照page分组,那么<pages>为空。

4、Page Speed SDK和YSLOW

首先我们现在google的Page Speed站点上下载安装SDK。http://code.google.com/p/page-speed/wiki/DownloadPageSpeed?tm=2。

然后把通过phontomJS获取的har文件进行解析。

这边已经可以通过命令行获取到具体的分数和建议。

同理我们也可以获取yslow的分数。

5、HAR Viewer

HAR Viewer(http://www.softwareishard.com/har/viewer/)是基于Javascript的一个很强大的HAR分析工具,它可以将HAR文件以瀑布流和饼图等形式进行展示。源代码在这里:http://code.google.com/p/harviewer/。

这些图片结合HAR的产生和pagespeed的评分建议是不是很酷!

6、后续的事儿

把站点的HAR文件用数据库的形式存储,建立趋势对比的文档。把自助工具建立成站点。

参考URL:

1、http://phontomjs.org

2、http://httparchive.org/about.php#harfile

3、http://weizhifeng.wordpress.com/2011/03/26/http-archive-specification-chinese/

4、http://www.igvita.com/2012/08/28/web-performance-power-tool-http-archive-har/

5、http://code.google.com/p/page-speed/wiki/DownloadPageSpeed?tm=2

6、http://groups.google.com/group/http-archive-specification

时间: 2024-10-05 17:22:47

基于phantomJS实现web性能监控的相关文章

性能魔方mmTrix推出基于云的web性能优化服务

性能魔方,新一代云应用性能管理服务商,今天宣布推出基于云的web性能优化服务,帮助客户优化网站速度,提高用户体验,以获得更好的用户转化率和收入. 性能魔方团队有着丰富的行业经验和卓越的前瞻思想,并充分利用云计算技术,使网络更快."我们有信心,我们的网站性能监测和网站速度优化服务将迅速为网站带来好处和价值,这些价值包括更好的用户体验和更高的投资回报率"CEO蒲炜说. 测试你的网站性能,分析与行业基准或者竞争对手的差距,请访问www.mmtrix.com,这是免费的,而且使用简单. 关于性

zabbix之web性能监控

zabbix之web性能监控 设置: 原文地址:http://blog.51cto.com/wsw26/2069216

web性能监控与分析

性能测试需要使用不同的工具,结合系统日志,监控服务器.应用等方面的多项指标.以下阐述监控指标.监控工具.瓶颈分析. 服务端监控指标 性能测试通常需要监控的指标包括: 服务器 Linux(包括CPU.Memory.Load.I/O). 数据库:MySQL(缓存命中.索引.单条SQL性能.数据库线程数.数据池连接数). 中间件:1.tomcat 2.nginx   3.memcache(包括线程数.连接数.日志). 网络: 吞吐量.吞吐率. 应用: jvm内存.日志.Full GC频率. 客户端监控

mongodb自带web性能监控

mongodb自带一个web界面监控.配置比较简单,只需要在启动时候加参数:--httpinterface 或者将httpinterface=true写到配置文件中 重启.在浏览器中输入:ip:mongodb端口号+1000 比如说数据库端口为20011 则监控页面为:ip:21011/export/mongodb/bin/mongod -f /export/mongodb/conf/mongod.conf --httpinterface 还可以加一个--rest参数.能够看到更多参数/expo

实用|从0到1 搭建Web性能监控系统

工具介绍 1. Statsd 是一个使用Node开发网络守护进程,它的特点是通过UDP(性能好,及时挂了也不影响主服务)或者TCP来监听各种数据信息,然后发送聚合数据到后端服务进行处理. 常见支持的「Graphite」,「ElasticaSearch」,「InfluxDB」 等等 ,它集成了各种语言的客户端API,这里我们使用了jsocol/pystatsd: A Python client for statsd进行数据收集. 2. Graphite 是一套Python写的开源编程接口,主要是用

利用Zabbix监控Web性能和可用性

怎么利用Zabbix监控web性能和可用性呢? 我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 1. 打开网站:如果http code为200,并且响应的html中包含Zabbix SIA表示打开成功(zabbix页面有这个标示) 2. 登陆后台:post用户名和密码到index.php,如果响应200,那表示post成功.并且通过正则表达式从响应的html中匹配sid,这个sid也就是一个宏变量,退出可以使用到 3. 验证登陆:打开首页,检索htm

[转载]前端数据之美 -- 七天打造前端性能监控系统

开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot improve it” ———— William Thomson 这是一个最基本的问题,为什么要关注和监控前端性能?对于公司来说,性能在一定程度上与利益直接相关.国外有很多这方面的调研数据: 性能 收益 Google 延迟 400ms 搜索量下降 0.59% Bin

7 天打造前端性能监控系统

引言 前阵子在w3ctech的走进名企 - 百度前端 FEX 专场上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言.从前一篇文章前端数据之美相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述. 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot im

7 天打造前端性能监控系统(转)

引言 前阵子在w3ctech的走进名企 - 百度前端 FEX 专场上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言.从前一篇文章前端数据之美相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述. 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot im