简介 通常,当我们谈论一个互联网应用的性能的时候,我们总是会关注服务器系统的吞吐量(Throughput)、响应时间(Response Time)、单位时间的事务量(Transactions per seconde)、CPU 使用率、磁盘 I/0、内存使用等等服务器性能参数,测量这些服务器性能参数并对其进行分析是软件性能工程的主要工作。但是当基于 Web 2.0 技术互联网应用兴起的时候,游戏规则却已悄然发生了变化。一个典型的现象是,在实际的应用环境中,终端用户感到这个应用的响应很慢,但是在系统服务器端却观察不到任何一个资源瓶颈。而以服务器为中心的性能测量结果也证实这个互联网应用的吞吐量和响应时间都很好,而且在开发环境中也没有检测到类似的响应慢问题。这种现象在 Web 2.0 之前不是没有,但在 Web 2.0 架构的应用却越来越普遍。这说明以服务器为中心的性能工程可能是有盲点的,它可能已经不能全面分析、解决在 Web 2.0 架构上的性能问题。针对 Web 2.0 架构的性能工程,我们需要找到这个盲点,并用新的理论、方法和工具来填补这个盲点。 面向服务器的性能工程的盲点 以服务器为中心的性能工程是一个复杂的系统工程。它有着成熟的理论、方法和工具,也取得了巨大的成功。有关这些,本文就不一一赘述。去繁就简,其基本方法就是: 这套方法有盲点吗?有。用这套方法所观察到的响应时间和真实的终端用户的观察到的响应时间比,至少有两个盲点: 然而,这两个盲点也被忽略很多年了,服务器中心的性能工程已经成功很多年了。那么在 Web 2.0 架构下,它还能继续被忽略吗? 新的挑战与无法忽略的盲点 Web 2.0 架构到底给性能工程带来了什么样的挑战?在回答这个问题前,让我们比较一下 Web 2.0 架构和传统互联网应用的的区别。这个图对比了传统互联网应用(WebSphere Portal)的三层体系架构和 Web 2.0 应用(Lotus Mashups)的三层体系架构: 它们之间的区别是明显的: 由此可见,Web 2.0 的应用给性能工程带来了两大挑战,而这两大挑战恰恰是在传统互联网应用中可以被忽略的性能盲点。在 Web 2.0 应用中它们不能再被忽略: 在传统的互联网应用架构中,绝大多数的工作是在服务器端完成的。所有的业务逻辑是服务器端完成的,并且服务器端生成了完整的 HTML 页面,浏览器只要呈现就可以了。 而在 Web2.0 架构中,很多工作被移到了浏览器端,浏览器用 Javascript 直接操作 DOM 来生成 HTML。而且部分义务逻辑也可以在浏览器端完成。同时,随着异步 HTTP 请求的大量使用,HTTP 请求的发起时间由 JavaScript 逻辑控制。这使得 HTTP 请求的并发度下降,而影响到页面下载的完成时间。这些都使得很多的响应时间消耗在浏览器端。所以浏览器渲染时间不能被忽略。 在传统的互联网应用架构中,逻辑是有 Java 或其他语言在服务器的执行的。这些代码不也就驻留在服务器端而不需要被传输。而在 Web 2.0 架构下,这些代码是很有可能用 Javascript 实现并在 Browser 端执行的。这必然涉及到 Javascript 及其他相关联资源在互联网上的传输。这使 Web 2.0 架构可能会牵涉多的多的 HTTP 请求。而这可能或大大的增加网络传输时间,细节容后再述。 ? 总结:照亮盲点 由上所述,这两大盲点在 Web 2.0 应用中不能被忽略。我们需要新的方法与工具来覆盖特别是客户端的性能 -- 浏览器响应时间。 通常,我们可以理解浏览器响应时间的计算公式: 浏览器响应时间=?服务器端响应时间+?页面装载时间+?浏览器渲染时间 在传统的互联网应用中,由于浏览器端的时间消耗比较有限,并且页面装载时间也比较简单且有限。所以在对传统互联网应用的响应时间分析中,我们通常忽略页面装载时间和浏览器渲染时间,而着重分析服务器响应时间。 而在 Web 2.0 应用中,页面装载时间和浏览器渲染时间将成为决定性能的关键因素。所以在接下来的系列文章中,我们将以 IBM Mashup Center 的产品作为实例,分别介绍有关页面装载时间与浏览器渲染时间的性能测试和分析方法,并在最后一篇文章列出了一些通用的解决方案。 参考资料 学习
图 1. 传统互联网应用(WebSphere Portal)的三层体系架构和 Web 2.0 应用(Lotus Mashups)的三层体系架构?
详细解决方案
全面擢升 Web 2.0 应用程序的性能,第 1 部分: Web 2.0 应用的性能分析概述和新的挑战
热度:331 发布时间:2012-11-21 08:23:25.0
相关解决方案
- windows 2003服务器-事件查看器-应用程序-复核失败-SA
- 应用程序“DEFAULT WEB SITE”中的服务器异常有关问题,好烦的
- c#应用程序,一个简单的有关问题
- 会导致 asp.net 应用程序 重启 的所有 可能原因,该如何处理
- 小弟我的websphere 应用程序 正常启动 但 访问小弟我的页面全是空白
- 配置 IIS在64位Windows下运行 32 位 ASP.NET 应用程序
- windows 2003 64位系统php运作报错:1% 不是有效的 win32 应用程序
- [转]面临 Java 开发人员的 Ajax: 构建动态的 Java 应用程序
- 面临 Java 开发人员的 Ajax: 使用 Jetty 和 Direct Web Remoting 编写可扩展的 Comet 应用程序
- 运用 Continuations 和 Reverse Ajax 创建事件驱动 Web 应用程序
- 施用 HTML 5 创建移动 Web 应用程序,第 1 部分: 联合使用 HTML 5、地理定位 API 和 Web 服务来创建移动混搭程序
- 传统下,网页中不会有大量的脚本,至少脚本很少会影响网页的性能。但随着网页越来越像 Web 应用程序,脚本的效率对网页性能影响越来越大。而且使用 Web 技术开发
- JavaScript:运用面向对象的技术创建高级 Web 应用程序
- 施用面向对象的技术创建高级 Web 应用程序(JavaScript)
- 【转】施用缓存构建更快的 Web 应用程序
- zz:运用面向对象的技术创建高级 Web 应用程序
- 施用 Grails 快速开发 Web 应用程序
- VS2008中新建网站(ASP.NET 网站)和新建项目(ASP.NET Web 应用程序)的区别
- 用 HTML 五 构建 Web 应用程序
- 【转载添批注】使用面向对象的技术创建高级 Web 应用程序
- 在 Android 下使用 XML 和 JSON,第 2 部分: 交付混合了 JSON 的 Android 应用程序
- 用 Sencha Touch 构建腾挪 web 应用程序
- 施用 TSAM 扩展来管理 J2EE 应用程序
- 使用 TSAM 扩展来管理 J2EE 应用程序
- 应用 Eclipse 远程调试 Java 应用程序
- 运用 Eclipse 远程调试 Java 应用程序
- 不能运行Java 应用程序?解决办法
- 怎么从WindosXP中将日志(应用程序、安全性和系统日志)提取出来,转换成EXCEL格式存储到一个数据库中
- C#应用程序 怎么使用html界面(不使用WebBrowser控件;不采用WPF项目)
- 应用程序(C#)怎样设置可以让存储过程的变量使用默认值,该怎么解决