David的测试技术空间,收藏好文档和分享我的技术理解。5年的数通产品测试和安全产品测试经验,3年Web产品测试和多年测试管理和测试工具开发经验。目前关注性能分析调优、Jmeter和TestNG+WebDriver+Hamcrest的培训推广。Welcome沟通交流,请留言或者发邮件到daviwang_2004 at soguo.com。
通用应用性能神话
上一篇 /
下一篇 2008-01-10 15:25:00
/ 个人分类:旧资料
通用应用性能神话
神话 #1:应用性能仅依赖于带宽
应用性能和吞吐率受多种因素影响。延迟和数据包丢失对应用性能产生重大的影响。利托氏定理 (Little's Law) 开创性地描述了等候理论,并利用一个方程式反应物理距离(延迟)与数据包丢失的结果,阐明了这两种因素对应用性能的影响。
该定理认为:
Lambda(吞吐量)= n(未决请求的数量)/ t(响应时间)
根据 IP 协议,该公式可转化为:
TCP 吞吐量 = 拥塞窗口大小 / 往返时间
这样,随着每一请求往返时间 (RTT) 的延长,拥塞窗口必须扩大,否则 TCP 吞吐量将降低。但是,TCP
无法有效地管理较大的窗口。结果是,对于一个特定应用而言,即便是数量较小的延迟和数据包丢失都能够将网络性能快速降低至每秒 1 MB
以下。即时带宽容量提升到 100Mbps,应用也不会占用整个容量的 1%
以上。在此情况下,添加网络容量的管理人员在无法使用的资源中投资,无疑是一种浪费。
Mathis、Semke、Mahdavi 及 Ott 于 1997 年 7 月在《计算机通信评论》 (Computer
Communication Review) 27(3) 中发表的“TCP
拥塞避免算法的宏观行为”中给出了 一个简短但非常实用的公式,可计算出传输速率的上限:
速率 <= (MSS/RTT)*(1 / {p} 的平方根)
其中:
速率:TCP 传输速率或吞吐量
MSS:最大段大小(每条互联网路径固定,通常为 1460 字节)
RTT:往返时间(根据 TCP 进行测量)
p:数据包丢失率。
下图描述了这一情形:
图 1:物理距离与 TCP 性能的关系
在广域网中,决定往返时间(即,延迟)的因素包括物理距离、效率低下的网络路由模式以及网络拥塞,这些因素大量存在于广域网中。
现在,许多 TCP
协议栈在进行重新传输时效率非常低下。事实上,如果一个数据包丢失,那么,一些栈可能需要传输整个拥塞窗口。此外,它们还将在出现网络拥塞时呈指数回退
(即,减少拥塞窗口并增加重新传输定时器),这种行为在数据包丢失时受到 TCP
的监测。尽管在通常情况下,数据包丢失在帧中继网络中无关紧要(平均低于 .01%),但在 IP VPN
网络中则至关重要,这种网络进出于数据包丢失率通常超过 5% 的特定市场(如,中国)。在后一种情况下,高数据包丢失率可能会对性能产生灾难性的影响。
当数据包丢失和延迟影响相结合时,那么,性能急转直下,后果更加严重。下图描述了这一情形:
图 2:数据包丢失时的 TCP 性能
。
神话 #2:TCP 需要 Aggressive Back-Off(主动回退)以确保公平
很多网络工程师认为,遭遇拥塞时主动回退对于保持网络访问公平性是十分必要的。某些情况下这种说法千真万确,然而有些情况则不然。当拥塞控制对网络中
的每一台主机负责,每台主机对其它主机带宽需求一无所知时,主动回退对于确保公平性就十分必要。但是,如果拥塞在网络结构中由可了解特定 WAN
连接上所有流量的系统加以控制时,则可能出现更高更有效的吞吐量,这种情况下,主动回退就多此一举了。
标准的协议行为规定主机何时占用带宽,这些主机必须照此执行而不依赖于:
☆ 应用的需求
☆ 可用的带宽
☆ 争用带宽的数量
这种情况导致的后果是,通常,应用的带宽资源严重不足,而同时大量网络资源并未得以利用。很明显,这种情况的效率极低。
解决 TCP
公平性问题的有效办法是,允许单独的主机按需求占用相应带宽,只要所有其它主机需要服务时,可接收到足够的服务即可。这可通过一个所有主机共享的拥塞窗口
实现,这个窗口由网络自身加以控制。这样,在此系统中,主机可在竞争程度不太激烈的时候,按需要获得相应带宽,当竞争加剧时,所有主机便可获得足够的带
宽。
这种单一窗口的方法可实现连续的较高利用率以及较高的总体吞吐能力。每台主机都可访问整洁快速的网络,这个网络永远不会丢失数据包(因此,也不会出现如神
话 #1 中的 TCP 性能削减问题),累积的流量需求与网络的整体缓冲能力相对应。这样,IT
经理就可在最大范围的网络延迟和数据包丢失情况下最有效地利用网络。
单一窗口的解决方案的执行可对客户端系统完全透明。这类解决方案的组成可能还包括 TCP
技术,如选择性确认、本地拥塞窗口管理、改进的重新传输算法以及数据包分散 (packet
dispersion)。然后,这些性能与其它技术完美结合,用以满足应用对于网络资源可用性的吞吐量需求,并跟踪所有利用网络的主机的带宽要求。通过整
合多个并行 WAN 链路的吞吐量,该技术能够实现更高的吞吐量及可靠性。
神话 #3:数据包压缩可提升应用性能
通用的数据包压缩技术降低 WAN
上流量的同时常常会降低应用的性能,这时因为它们通常会将延迟添加到应用交易中。这些技术需要数据包按队列等候、压缩、传输、在接收端解压,然后重新传输
所有数据包,这个过程会占用大量资源,并导致大幅延迟,因此,实际上减缓了需要加速的应用。
下一代应用性能解决方案将协议改进与透明数据压缩技术有机结合。与基于解决方案的数据包相比,下一代解决方案显著降低了需要传输的数据量,消除了在物理距
离扩大时由协议行为导致的延迟,并可提升广域网性能,使其速度达千兆位。通常,透明数据压缩技术还包括多个字典,其中 1
级字典空间较小,对于较小模式的数据压缩极其有效,而 2 级字典具有几千兆字节的容量,适用于压缩较大模式的数据压缩。
神话 #4:服务技术的质量可改善应用 如果利用的恰到好处,服务质量 (QoS) 是一种可带来不菲收益的技术,能够为改善应用性能助一臂之力。但是,QoS
唯一能做的就是将现有带宽划分为多条虚拟通道。QoS
不会实际传输数据或将协议行为流程化,而仅以一种智能的方式决定应放弃哪个数据包。然而,与放弃无法加速应用的数据包相比,采用一种可控制的方式放弃数据
包是更为出色的做法。
许多 QoS 实施以跟踪应用的端口数量为依据。由于应用通常对端口分配进行动态地协商,因此,这些机制需要配置为保留较大的端口范围,以确保端口的覆盖真正为应用所利用。
为了使 QoS 最为有效,应将其设置为动态模式。第一代 QoS
实施减少连接多个较小链路的大型链路,无论是否需要带宽都可静态地加以保留。实际上,带宽常常被特定应用所占用,甚至有时应用根本未加利用,这就造成了带
宽的浪费,“信道化”一个网络可确保带宽对于话音等关键应用的可用性。
另一方面,动态的 QoS 解决方案还可确保仅在应用可利用带宽的情况下保留带宽。通常,采用这种技术可在带宽可用时,通过支持连续的数据备份,实现企业备份窗口的扩展。
相关阅读:
- asp.net应用程序生命周期概述(msdn) (davidwang_2004, 2007-10-19)
- Test Case Document Formats (davidwang_2004, 2007-11-13)
- Basing Test Cases on Product Requirement Documents (davidwang_2004, 2007-11-13)
- Writing a Requirements Document (davidwang_2004, 2007-11-13)
- 单元测试模式 (davidwang_2004, 2007-12-07)
- CUnit Framewor介绍 (davidwang_2004, 2007-12-27)
- 字符编码的使用和转换 (davidwang_2004, 2008-1-02)
- HTTP Handlers and HTTP Modules in ASP.NET (davidwang_2004, 2008-1-03)
- ASP.NET 2.0运行时简要分析 (davidwang_2004, 2008-1-03)
- LR监控linux之详解rstatd的安装 (davidwang_2004, 2008-1-10)
收藏
举报
TAG:
与目前工作有关的杂项