Velocity 2013参会笔记

来源:互联网 发布:一键必杀xkey软件 编辑:程序博客网 时间:2024/06/05 01:15
今年有幸去北京参加了Velocity 2013北京大会,有一些见闻收获,交个作业,记录得比较零散。

有些同学可能还不了解这个大会,这里简单介绍下。这个大会是O‘Reilly组织的,对,就是那个著名的IT图书出版社。从2010年开始引入中国,都是在北京举办。
Velocity,顾名思义,关注的是性能,主要是WEB的性能,现在移动应用的性能也是重点,所以去演讲的大多是Google,Facebook,Twitter,Tencent,Taobao,Baidu等互联网公司的工程师,当然也有一些赞助商的session,都是卖工具卖服务的。一般是2天的,因为大多是结合实际工程实践的演讲,所以总体来说内容还不错,比较接地气。
更多资料可以访问下面网址,历年的PPT都有哦。
http://velocity.oreilly.com.cn/2013/

好的,下面说下今年我听的session中几个印象比较深一点的。PPT大家直接移步这里下载自己感兴趣的: http://velocity.oreilly.com.cn/2013/index.php?func=slidesvideos 


1. 印象笔记在中国   肖贺(Evernote )
Evernote是一个很多同学都在使用的云笔记服务,因为全平台覆盖和各种方便深受喜爱。我这个笔记也都是在evernote中断断续续完成的。
Evernote和印象笔记其实可以认为是两个产品,账号体系也是分开的,后者是专门针对中国市场的,也在国内部署,演讲的是他们中国区的运维。

- 数据方面,他们将元数据(用户的笔记本,文章的meta信息)和笔记内容分开存储,前者大小比较可控,大家在第一次安装一个终端的时候发现也是分开同步的。
- 为了减少部署的层次和复杂性,他们在Load balance设备上基于cookie,URL等来判断数据在哪个对应的notestore上,做7层的分发。
- 数据的备份方面,总共存两份,其中一份异地备份。写的时候有一份成功就认为写成功,剩下的失败不会block,而是放到队列里面后续异步继续执行。
- 每组服务有两台物理服务器来互备,数据的同步采用DBRD技术。正好在几年前的项目中也使用过这个,当时还不太成熟,现在已经大规模使用了。这个已经整合进了Linux内核,可以做两台联网的机器的硬盘块的同步,相当于是跨机器的RAID-1. 好处是对上层应用来说比较透明。
- evernote还有些高级功能(之前好像没怎么用过)。一个是PDF render,可以编辑PDF文件,这个比较计算密集些,剥离出来单独部署。 另一个是AIR,对笔记里面的图片做OCR,也是剥离出来做异步的离线处理。


2. Chrome资源调度    陈智昌(Google)
这个同学是在SF的Google chrome开发团队的,ABC,离开外企后发现英文退化不少 :)
他讲的主要是chrome浏览器中对于请求页面元素的一些策略来优化速度和显示,减少白屏时间。他们做了一些策略的调整,关于如何尽快开始元素加载和优先请求获取哪些对页面展示来说优先级更高的元素,在网络拥塞和饥饿之间的一个平衡。

- 关于尽快开始元素加载,有两种细微的优化。
   A. 在第一个请求,也就是页面的HTML还没有完全返回的情况下,就开始部分解析HTML,判断出里面的元素,然后开始发起并发。相当于HTML后半部分和其他元素是并行,讲并行度进一步提升。之所以有这样的提升空间,是因为很多网站首页HTML比较大,比如易迅首页,压缩后43KB,实际约330KB。一个TCP响应一次最多只能传输1460B的有效载荷,算下来超过30个回包,如果网络延时比较长。而浏览器可以在顺序解析了15个就开始parse出里面的其他元素,比如脚本和图片开始加载,将可以提升很多。  这个做法目前已经在很多浏览器支持,我之前抓包也观察到了。
   B. 和第一个类似,在HTML解析在等待其他元素,比如CSS,JS的时候,它会继续往前看,来找出后续要加载的,提前发起请求。

- 优先级的判定有两种,一种是基于元素类型,HTML>CSS>JS>Images; 另一种是模糊的方法,基于更细粒度的展示的需要来判断。其中一个控制方法是控制到一个host的最大连接数来控制并行度,目前很多浏览器的设置是6,上面的算法可以动态来缩小这个值来降低某一部分元素的优先级。

- 宣传下Google的SPDY协议,目前已经有很多浏览器开始支持了。详细请见 http://zh.wikipedia.org/wiki/SPDY

这个session的另一个收获就是学到了一个在线工具, 有些同学可能用过,这个也是web前端工程师比较喜欢的一个工具。相当于是在线第三方性能评测,有很多非常使用的功能。
http://www.webpagetest.org/

包含一些基础的分析,repeat可以看出带缓存的效果。下面的几个tab是从不同维度的分析,很有帮助。



这个功能很cool。 google的同学演示优化效果就是用的这个。另外也可以用于和竞争对手的比较,大家可以找自己产品的竞争对手PK看看。不过这个应该是国外网络访问的情况。



另外还有模拟从移动设备发起请求的。不过提交了测试请求后可能要排很久。



国内的另一个类似的是阿里测,也还不错。
http://www.alibench.com/
 
同去的一个公司同事说发现最大的收获是知道了几个好工具,想想也有到了,理论不实际时间长了就忘了。 

3. 百度前端性能优化基础服务  牛尧(百度)
这个也是属于干货比较多的,BAT三家前端积累都比较深。

性能离不了监控和数据。我们之前看得太粗了,听了几个session,比较一致的是大家都比较关注白屏的时间(这个埋头统计的时候需要一些方法,比如Body区域开始打点处理),首屏出来的时间等用户体验直接相关的指标。其他session中淘宝和天猫的首页优化,腾讯的子舜的部分也都多次提到。


数据采集和分析的几个点:
采样or全量
- 建议采用,保证20W以上的样本
注: 这个地方值得思路。CGI监控是很稀疏的采样,页面埋点是几近全量的上报,两者似乎都有点极端了。觉得我们目前这一块的数据持续跟进和观察有进一步的空间。

数据的加工:
-均值: 去掉长尾
-分布区间: 每50ms一个粒度
-多维细分数据:
用户,浏览器,网络状况,机型
-慢速用户构成

- 分析平台方面的做法
单一网站,千万以下MySQL+脚本
海量:Hadoop + Hive

我们目前是遇到问题手工分析,缺少一些持续的可对比的历史数据,这个对于持续的优化和对比效果很有价值,值得我们参考。测试平台上有一些,但是维度和力度好像都不太够。

- 数据的展现主要有几种:汇总时间表; 变化趋势图;分布区间



工具,又是工具: 
dynaTrace: IE下性能分析利器。 First Impression Time不一定准
浏览器内置:Yslow,pagespeed。  developer tools

上面的估计很多人用过。还有个更深入一点的需要埋点的:
Google Web Tracing Framework

baidu:Pagecheck  可以批量运行
- 评分优化建议
- 瀑布流
- 代码覆盖率


tracker,很cool的工具,可以是插件,也可以是独立的client,还支持mac os。除了执行的分析,还有实时的覆盖率啊,页面操作后会叠加变化。
http://ucren.com/tracker/docs/



Page Timeline: 基于webkit内核的渲染分析工具
报告:Hotsspot,渲染的时序图
对这个比较感兴趣,是百度内部一个对webkit研究了很久的人开发的,因为到内核所以可以拿到很多底层的数据。有人问了,说后续可能开源出来。


4. 16毫秒的优化——Web前端性能优化的微观分析  陈子舜(腾讯)
这个听得很过瘾,从GPU渲染的角度来分析页面的性能,16ms对应的60Hz的意思。有很多深入的分析,会场坐得满满,一起去的腾讯同学都为这样高质量演讲挺有自豪感 :)

精彩内容大家自己看PPT。这个案例非常有说服力



听这个的时候想起Jasper之前举的互娱的显卡问题和游戏流畅性分析的例子,我在想,如果我们的测试对于页面的性能分析到这样的粒度,那真是一件很有成就感的事情,也是努力的方向吧。


工具,再来。

用PC上的chrome调试手机上的chrome页面。基本做法是PC chrome装android adb插件,adb本身加到path也能正常识别手机,手机用chrome浏览器,打开远程调试模式。对于touch版这种应该很方便了。




=============== 喘口气的分割线 ================
还有几个很不错的session,就不一一写笔记了,大家直接看PPT。
- Web APP的性能优化——Qzone touch海量服务性能优化实战   石玉磊(腾讯)
 Qzone touch版的,很多很具体的实践值得参加。负责touch版的同学不要错过。

- 携程客户端网站性能及用户行为数据采集   储诚栋(携程旅行网)
- 携程的这个主要是讲监控,挺全面的,但内容太多,讲的不够细。 大家可以参考,有些和业务相关的监控值得思考,我们目前的监控还没有突出电商的特色,当然BI也有一些。

 淘宝数据采集分析工具——Tsar
这个工具在淘宝内部使用比较多,他们把他开源出来了,有兴趣的可以试试。

对了,除了今年的PPT,往年的也能看到。前年还有Steve Souders大神的。
类似这样换下URL里面的年份,http://velocity.oreilly.com.cn/2012/

好了,就写到这里。感谢有这样的机会参会,也希望对大家有一点点帮助。
总的来说,觉得这两天的大会内容还是很丰盛的,也能带来很多启发和思考,就是消化需要一些时间。 如果明年还有这样的机会,我会推荐我们有人继续参加这个会议。



原创粉丝点击