简介
通常,当我们谈论一个互联网应用的性能的时候,我们总是会关注服务器系统的吞吐量(Throughput)、响应时间(Response Time)、单位时间的事务量(Transactions per seconde)、CPU 使用率、磁盘 I/0、内存使用等等服务器性能参数,测量这些服务器性能参数并对其进行分析是软件性能工程的主要工作。但是当基于 Web 2.0 技术互联网应用兴起的时候,游戏规则却已悄然发生了变化。一个典型的现象是,在实际的应用环境中,终端用户感到这个应用的响应很慢,但是在系统服务器端却观察不到任何一个资源瓶颈。而以服务器为中心的性能测量结果也证实这个互联网应用的吞吐量和响应时间都很好,而且在开发环境中也没有检测到类似的响应慢问题。这种现象在 Web 2.0 之前不是没有,但在 Web 2.0 架构的应用却越来越普遍。这说明以服务器为中心的性能工程可能是有盲点的,它可能已经不能全面分析、解决在 Web 2.0 架构上的性能问题。针对 Web 2.0 架构的性能工程,我们需要找到这个盲点,并用新的理论、方法和工具来填补这个盲点。
面向服务器的性能工程的盲点
- 记录一个典型终端用户浏览器和应用服务器的交互,也就是浏览器和应用服务器之间的 HTTP 请求。
- 用性能测量软件将这些 HTTP 请求编制成脚本。典型的测量软件有 IBM 的 Rational Performance Tester。
- 在工作负荷生成服务器上,性能测量软件将模拟成千上万的用户来运行这些脚本,即发送 HTTP 请求并接受响应。
- 性能测量软件将记录,计算用户请求的响应时间,服务器的吞吐量及其它性能数据。
这套方法有盲点吗?有。用这套方法所观察到的响应时间和真实的终端用户的观察到的响应时间比,至少有两个盲点:
- 缺少浏览器渲染时间。终端用户的浏览器会渲染(包括解释,执行和呈现)HTTP 响应的内容。而性能测量软件却不能。
- 缺少复杂网络条件下,网络传输对响应时间的影响。真实用户很可能会从各种各样不同网络环境(比如网吧)访问一个互联网应用,而基于现实的原因,性能测量软件往往是在实验室中访问实验室中的互联网应用。
然而,这两个盲点也被忽略很多年了,服务器中心的性能工程已经成功很多年了。那么在 Web 2.0 架构下,它还能继续被忽略吗?
回页首
新的挑战与无法忽略的盲点
Web 2.0 架构到底给性能工程带来了什么样的挑战?在回答这个问题前,让我们比较一下 Web 2.0 架构和传统互联网应用的的区别。这个图对比了传统互联网应用(WebSphere Portal)的三层体系架构和 Web 2.0 应用(Lotus Mashups)的三层体系架构:
图 1. 传统互联网应用(WebSphere Portal)的三层体系架构和 Web 2.0 应用(Lotus Mashups)的三层体系架构
它们之间的区别是明显的:
- WebSphere Portal:业务逻辑层的实现在服务器端。
- Lotus Mashups:业务逻辑层的实现可以在浏览器端。
- WebSphere Portal:绝大部分的表现层在服务器端。
- Lotus Mashups:绝大部分的表现层在浏览器端。
- WebSphere Portal:服务器端的 Portlets 内容聚合。服务器端把 Portlets 的内容聚合成 Html, 浏览器端负责 HTML 页面内容渲染和有限的 JavaScript 实现用户交互。
- Lotus Mashups: 浏览器端的 Widgets 内容聚合。浏览器端把 Widgets 的内容插入 HTML DOM, 浏览器端完全负责 HTML 的生成和页面内容渲染,大量的 JavaScript 在浏览器上运行。
由此可见,Web 2.0 的应用给性能工程带来了两大挑战,而这两大挑战恰恰是在传统互联网应用中可以被忽略的性能盲点。在 Web 2.0 应用中它们不能再被忽略:
-
盲点 1:浏览器渲染时间
在传统的互联网应用架构中,绝大多数的工作是在服务器端完成的。所有的业务逻辑是服务器端完成的,并且服务器端生成了完整的 HTML 页面,浏览器只要呈现就可以了。 而在 Web2.0 架构中,很多工作被移到了浏览器端,浏览器用 Javascript 直接操作 DOM 来生成 HTML。而且部分义务逻辑也可以在浏览器端完成。同时,随着异步 HTTP 请求的大量使用,HTTP 请求的发起时间由 JavaScript 逻辑控制。这使得 HTTP 请求的并发度下降,而影响到页面下载的完成时间。这些都使得很多的响应时间消耗在浏览器端。所以浏览器渲染时间不能被忽略。
-
盲点 2:网路传输时间
在传统的互联网应用架构中,逻辑是有 Java 或其他语言在服务器的执行的。这些代码不也就驻留在服务器端而不需要被传输。而在 Web 2.0 架构下,这些代码是很有可能用 Javascript 实现并在 Browser 端执行的。这必然涉及到 Javascript 及其他相关联资源在互联网上的传输。这使 Web 2.0 架构可能会牵涉多的多的 HTTP 请求。而这可能或大大的增加网络传输时间,细节容后再述。
回页首
总结:照亮盲点
由上所述,这两大盲点在 Web 2.0 应用中不能被忽略。我们需要新的方法与工具来覆盖特别是客户端的性能 -- 浏览器响应时间。 通常,我们可以理解浏览器响应时间的计算公式:
浏览器响应时间= 服务器端响应时间+ 页面装载时间+ 浏览器渲染时间
在传统的互联网应用中,由于浏览器端的时间消耗比较有限,并且页面装载时间也比较简单且有限。所以在对传统互联网应用的响应时间分析中,我们通常忽略页面装载时间和浏览器渲染时间,而着重分析服务器响应时间。 而在 Web 2.0 应用中,页面装载时间和浏览器渲染时间将成为决定性能的关键因素。所以在接下来的系列文章中,我们将以 IBM Mashup Center 的产品作为实例,分别介绍有关页面装载时间与浏览器渲染时间的性能测试和分析方法,并在最后一篇文章列出了一些通用的解决方案。
转自:DW http://www.ibm.com/developerworks/cn/lotus/web20-perf-1/index.html
分享到:
相关推荐
EXT2.0的这些改进和新特性显著提升了EXT框架的易用性和灵活性,使得开发者能够构建更强大、更高效的Web应用程序。通过理解这些核心概念,开发者可以充分利用EXT2.0的优势,创造出令人印象深刻的用户界面。
**第一章:ASP.NET 2.0概述** 在这一章中,可能会涵盖ASP.NET 2.0的基本概念,包括它的主要改进和新特性。这可能包括: 1. **改进的开发环境**:Visual Studio 2005作为默认IDE,提供了更好的开发体验和强大的调试...
.NET Framework 2.0 SP1(Service Pack 1)是微软开发的一个重要的软件开发平台,它为程序员提供了构建、运行基于Windows的应用程序所需的基础架构。静默安装是一种无需用户交互的安装方式,常用于批量部署或者自动...
6. **portlet支持**:Spring 2.0开始支持portlet开发,为基于portlet的Web应用程序提供了全面的框架支持。 7. **国际化(Internationalization, i18n)**:Spring 2.0增强了对多语言环境的支持,提供了更方便的工具...
ASP.NET 2.0是微软推出的用于构建动态网站、Web应用程序和Web服务的开发框架,它是.NET Framework的一部分。本全程指南将深入探讨ASP.NET 2.0的核心概念、特性和功能,帮助开发者全面掌握这一技术。 一、ASP.NET ...
ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它建立在.NET Framework的基础之上,为开发者提供了丰富的功能和高效的语言支持。本资源"ASP.NET 2.0网络编程从入门到精通-修订"显然是一个教程文档,旨在...
Django 2.0 版本带来了许多改进和新特性,进一步提升了开发效率和应用程序的安全性。其官方中文文档是学习和掌握 Django 的重要资源。 1. **Django 概述** Django 遵循“DRY”原则(Don't Repeat Yourself),强调...
JSP2.0是JSP技术的一个重要版本,它在JSP1.2的基础上引入了许多改进和新特性,以提升开发效率和应用性能。本手册详细介绍了JSP2.0的核心概念、语法和最佳实践。 **1. JSP2.0主要改进** 1.1 **表达式语言(EL, ...
2.0版本还引入了FastCGI,提供更高效的方式运行CGI应用程序。手册会讲解如何配置CGI和FastCGI,以及与PHP、Perl或其他脚本语言的集成。 八、整合应用服务器与框架 Apache可与其他应用服务器(如Tomcat)集成,以...
**一、MVC2.0概述** MVC2.0是ASP.NET MVC框架的一个重要版本,发布于2010年。相比于之前的MVC1.0,它带来了许多改进和新特性,如数据注解验证、强大的视图引擎(Razor)支持、模型绑定增强等。在MVC2.0中,开发者...
JSF 2.0是该框架的一个重要版本,引入了许多改进和新特性,提升了开发效率和用户体验。本教程将深入讲解JSF 2.0的核心概念、设计原则以及最佳实践。 1. **JSF框架概述** JSF的核心思想是将用户界面与业务逻辑分离...
- **案例分析**:通过实际案例,指导读者如何运用所学知识来构建完整的Web应用程序。 - **最佳实践**:分享了一些开发过程中的最佳实践,帮助开发者避免常见的错误并提高代码质量。 - **性能优化**:提供了关于如何...
### JSF 2.0:全面解析与应用 #### JSF概述 JavaServer Faces(JSF)作为Java EE平台中的官方组件驱动视图技术,在Web层面上提供了丰富的功能集。JSF不仅具备预定义的UI组件集合,还支持事件驱动的编程模型,允许...
### JavaServer Faces 2.0:全面参考指南 #### 关于本书 《JavaServer Faces 2.0: The Complete Reference》是一本针对JavaServer Faces (JSF) 2.0技术的全面指南,由Ed Burns、Chris Schalk及Neil Griffin共同...
- **Web 开发**:熟悉 ASP.NET 框架,了解如何创建动态 Web 应用程序,包括页面生命周期、控件使用和事件处理等。 - **安全性**:理解 .NET Framework 中的安全机制,如角色管理和基于策略的安全模型等。 - **性能...
GWT(Google Web Toolkit)是谷歌推出的一款开源的JavaScript开发框架,它允许开发者使用Java语言来编写Web应用程序,然后自动编译成优化过的JavaScript代码,从而在浏览器端运行。GWT API v2.0是该框架的一个重要...