软件架构之系统性能评价
- 第 5 章 系统性能评价
- 5.1 性能指标
- 5.1.1 计算机
- 5.1.2 网络
- 5.3 性能设计
- 5.3.1 阿姆达尔解决方案
- 5.3.2 负载均衡
- 5.4 性能评估
- 5.4.1 基准测试程序
- 5.4.2 Web 服务器的性能评估
- 5.4.3 系统监视
第 5 章 系统性能评价
系统性能是一个系统提供给用户的众多性能指标的混合体。它既包括硬件性能,也包括软件性能。随着计算机技术的不断发展,有关性 能的描述也越来越细化,根据不同的应用需要产生了各种各样的性能指标,如整数运算性能、浮点运算性能、响应时间、网络带宽、稳定性、I/O 吞吐量、SPEC-Int、SPEC-Fp、TPC、Gibson mix 等。有了这些性能指标之后,如何来衡量这些性能指标呢?这就涉及了性能计算。同时用户对性能需求的多样性和广泛性也更进一步加快了计算机技术的发展,并由此出现了一个新的分支:性能设计。性能设计主要包含两方面的内容:一是作为未来计算机技术发展的参考和规划;另一个则是对现有系统进行性能上的调整以达到最优化。在系统性能指标的不断增多和完善过程中,许多公司和个人投身于系统性能的挖掘和实践中,并由此产生了一系列有效的系统性能评价体系。如前面提到 SPEC,已经成为测试 CPU 的最权威的性能测试标准。
(1)性能指标:描述当前流行系统主要涉及的性能指标;
(2)性能计算:描述当前使用到的主要性能指标的计算方法;
(3)性能设计:描述如何对现有系统进行性能上的调整优化,并介绍几个已经成熟的设计规则和解决方案;
(4)性能评估:描述如何对当前取得的性能指标进行评价和改进。
5.1 性能指标
在计算机刚刚诞生时,所谓的系统仅仅指的是计算机本身,随着网络的出现和发展,诸如路由器、交换机设备,TCP/IP、SPX/IPX、以太网、光纤网络等网络技术如雨后春笋般涌现。系统的概念也不再局限于单台计算机,而是成为一个集各种通信设备于一体的集成装置。因此,这里所提到的性能指标,既包括软件,也包括硬件。在硬件中,既包括计算机,也包括各种通信交换设备,以及其他网络硬件;在软件中,既包括操作系统和各种通信协议,也包括各种参与到通信中的应用程序,如数据库系统、Web 服务器等。因此,本节要提到的系统性能指标实际上就是这些软硬件的性能指标的集成。
5.1.1 计算机
对计算机评价的主要性能指标如下:
1.时钟频率(主频)
主频是计算机的主要性能指标之一,在很大程度上决定了计算机的运算速度。CPU 的工作节拍是由主时钟来控制的,主时钟不断产生固定频率的时钟脉冲,这个主时钟的频率即是 CPU 的主频。主频越高,意味着 CPU 的工作节拍就越快,运算速度也就越快。但从 2000 年 IBM 发布第一款双核处理器开始,多核心已经成为 CPU 发展的一个重要方向。原来单以时钟频率来计算性能指标的方式已经不合适了,还得看单个 CPU 中的内核数。现在主流的服务器 CPU 大都为八核或十二核,未来更可能发展到 32 核,96 核甚至更多。
2.高速缓存
高速缓存可以提高 CPU 的运行效率。目前一般采用两级高速缓存技术,有些使用三层。高速缓冲存储器均由静态 RAM(Random Access Memory,随机存取存储器)组成,结构较复杂,在 CPU 管芯面积不能太大的情况下,L1 级高速缓存的容量不可能做得太大。采用回写(WriteBack)结构的高速缓存。它对读和写操作均有可提供缓存。而采用写通(Write-through)结构的高速缓存,仅对读操作有效。L2 及 L3 高速缓存容量也会影响 CPU 的性能,原则是越大越好。
3.运算速度
运算速度是计算机工作能力和生产效率的主要表征,它取决于给定时间内 CPU 所能处理的数据量和 CPU 的主频。其单位一般用 MIPS(百万条指令/秒)和 MFLOPS(百万次浮点运算/秒)。MIPS 用于描述计算机的定点运算能力;MFLOPS 则用来表示计算机的浮点运算能力。
4.运算精度
即计算机处理信息时能直接处理的二进制数据的位数,位数越多,精度就越高。参与运算的数据的基本位数通常用基本字长来表示。PC(Personal Computer,个人计算机)机的字长,已由 8088 的准 16 位(运算用 16 位,I/O 用 8 位)发展到现在的 32 位、64 位。大中型计算机一般为 32 位和 64 位。巨型机一般为 64 位。在单片机中,目前主要使用的是 8 位和 16 位字长。
5.内存的存储容量
内存用来存储数据和程序,直接与 CPU 进行信息交换。内存的容量越大,可存储的数据和程序就越多,从而减少与磁盘信息交换的次数,使运行效率得到提高。存储容量一般用字节(Byte)数来度量。PC 的内存已由 286 机配置的 1MB,发展到现在主流的 1G以上。而在服务器领域中,一般的都在 2~8G,多的如银行系统中省级结算中心使用的大型机,内存高达上百 GB。内存容量的加大,对于运行大型软件十分必要,尤其是对于大型数据库应用。内存数据库的出现更是将内存的使用发挥到了极致。
6.存储器的存取周期
内存完成一次读(取)或写(存)操作所需的时间称为存储器的存取时间或者访问时间。而连续两次读(或写)所需的最短时间称为存储周期。存储周期越短,表示从内存存取信息的时间越短,系统的性能也就越好。目前内存的存取周期约为几到几十 ns(10-9 秒)。 存储器的 I/O 的速度、主机 I/O 的速度,取决于 I/O 总线的设计。这对于慢速设备(例如键盘、打印机)关系不大,但对于高速设备则效果十分明显。例如对于当前的硬盘,它的外部传输率已可达 100MBps、133MBps 以上。
7.数据处理速率
数据处理速率(Processing Data Rate,PDR)的计算公式是:PDR=L/R。其中: L=0.85G+0.15H+0.4J+0.15K;R=0.85M+0.09N+0.06P
其中:
G 是每条定点指令的位数;
M 是平均定点加法时间;
H 是每条浮点指令的位数;
N 是平均浮点加法时间;
J 是定点操作数的位数;
P 是平均浮点乘法时间;
K 是浮点操作数的位数;
另外还规定:G>20 位,H>30 位;从主存取一条指令的时间等于取一个字的时间;指令和操作数都存放在同一个主存,无变址或间址操作;允许有先行或并行取指令功能,此时选用平均取指令时间。 PDR 主要用来度量 CPU 和主存储器的速度,它没有涉及高速缓存和多功能等。因此,PDR 不能度量机器的整体速度。
8.响应时间
某一事件从发生到结束的这段时间。其含义将根据应用的不同而变化。响应时间既可以是原子的,也可以是由几个响应时间复合而成的。在计算机技术的发展中,早在 1968 年,米勒先生就已给出 3 个经典的有关响应时间的建议。
0.1 秒:用户感觉不到任何延迟。
1.0 秒:用户愿意接受的系统立即响应的时间极限。即当执行一项任务的有效反馈时间在0.1~1 秒之内时,用户是愿意接受的。超过此数据值,则意味着用户会感觉到有延迟,但只要不超过 10 秒,用户还是可以接受的。
10 秒:用户保持注意力执行本次任务的极限,如果超过此数值时仍然得不到有效的反馈,客户会在等待计算机完成当前操作时转向其他的任务。
9.RASIS 特性
RASIS 特性是可靠性(Reliability)、可用性(Availability)、可维护性(Serviceability)、完整性(Integraity)和安全性(Security)五者的统称。可靠性是指计算机系统在规定的工作条件下和规定的工作时间内持续正确运行的概率。可靠性一般是用平均无故障时间(Mean Time To Failure,MTTF)或平均故障间隔时间(Mean Time Between Failure,MTBF)来衡量。
可维护性是指系统发生故障后能尽快修复的能力,一般用平均故障修复时间(Mean Time To Repair,MTTR)来表示。取决于维护人员的技术水平和对系统的熟悉程度,同时和系统的可维护性也密切相关。
10.平均故障响应时间
平均故障响应时间(TAT)即从出现故障到该故障得到确认修复前的这段时间。该指标反应的是服务水平。平均故障响应时间越短,对用户系统的影响越小。
11.兼容性
兼容性是指一个系统的硬件或软件与另一个系统或多种操作系统的硬件或软件的兼容能力,是指系统间某些方面具有的并存性,即两个系统之间存在一定程度的通用性。兼容是一个广泛的概念,它包括数据和文件的兼容、程序和语言级的兼容、系统程序的兼容、设备的兼容以及向上兼容和向后兼容等。
除了上述性能指标之外,还有其他性能指标,例如综合性能指标如吞吐率、利用率;定性指标如保密性、可扩充性;功能特性指标如文字处理能力、联机事务处理能力、I/O 总线特性、网络特性等。
5.1.2 网络
网络是一个是由多种设备组成的集合体。其性能指标也名目繁多。一般可以将这些性能指标分为以下几类:
(1)设备级性能指标。网络设备提供的通信量的特征,是确定网络性能的一个重要因素。计算机网络设备(主要指路由器)的标准性能指标主要包括吞吐量(信道的最大吞吐量为“信道容量”)、延迟、丢包率和转发速度等。
(2)网络级性能指标。可达性、网络系统的吞吐量、传输速率、信道利用率、信道容量、带宽利用率、丢包率、平均传输延迟、平均延迟抖动、延迟/吞吐量的关系、延迟抖动/ 吞吐量的关系、丢包率/吞吐量的关系等。
(3)应用级性能指标。QOS、网络对语言应用的支持程度、网络对视频应用的支持程度、延迟/服务质量的关系、丢包率/服务质量的关系、延迟抖动/服务质量的关系等。
(4)用户级性能指标。计算机网络是一种长周期运行的系统。可靠性和可用性是长周期运行系统非常重要的服务性能,是决定系统是否有实际使用价值的重要参数。
(5)吞吐量。在没有帧丢失的情况下,设备能够接受的最大速率。网络吞吐量可以帮助寻找网络路径中的瓶颈。例如,即使客户端和服务器都被分别连接到各自的 100Mbps 以太网上,但是如果这两个 100Mbps 以太网被 10Mbps 的以太网连接起来,那么 10Mbps 的以太网就是网络的瓶颈。
网络吞吐量非常依赖于当前的网络负载情况。因此,为了得到正确的网络吞吐量,最好在不同时间(一天中的不同时刻,或者一周中不同的天)分别进行测试,只有这样才能得到对网络吞吐量的全面认识。
有些网络应用程序在开发过程的测试中能够正常运行,但是到实际的网络环境中却无法正常工作(由于没有足够的网络吞吐量)。这是因为测试只是在空闲的网络环境中,没有考虑到实际的网络环境中还存在着其他的各种网络流量。所以,网络吞吐量定义为剩余带宽是有实际意义的。
5.1.3 操作系统
现代操作系统的基本功能是管理计算机系统的硬件、软件资源,这些管理工作分为处理机管理、存储器管理、设备管理、文件管理、作业管理和通信事务管理。
操作系统的性能与计算机系统工作的优劣有着密切的联系。评价操作系统的性能指标一般有:
(1)系统的可靠性。
(2)系统的吞吐量,是指系统在单位时间内所处理的信息量,以每小时或每天所处理的各类作业的数量来度量。
(3)系统响应时间,是指用户从提交作业到得到计算结果这段时间,又称周转时间;
(4)系统资源利用率,指系统中各个部件、各种设备的使用程度。它用在给定时间内,某一设备实际使用时间所占的比例来度量。
(5)可移植性。
5.1.4 数据库管理系统
数据库为了保证存储在其中的数据的安全和一致,必须有一组软件来完成相应的管理任务,这组软件就是 DBMS,DBMS 随系统的不同而不同,但是一般来说,它应该包括以下几方面的内容:
(1)数据库描述功能。定义数据库的全局逻辑结构,局部逻辑结构和其他各种数据库对象。
(2)数据库管理功能。包括系统配置与管理,数据存取与更新管理,数据完整性管理和数据安全性管理。
(3)数据库的查询和操纵功能。该功能包括数据库检索和修改。
(4)数据库维护功能。包括数据引入引出管理,数据库结构维护,数据恢复功能和性能监测。为了提高数据库系统的开发效率,现代数据库系统除了 DBMS 之外,还提供了各种支持应用开发的工具。
因此,衡量数据库管理系统的主要性能指标包括数据库本身和管理系统两部分。数据库和数据库管理系统的性能指标包括数据库的大小、单个数据库文件的大小、数据库中表的数量、单个表的大小、表中允许的记录(行)数量、单个记录(行)的大小、表上所允许的索引数量、数据库所允许的索引数量、最大并发事务处理能力、负载均衡能力、最大连接数。
5.1.5 Web 服务器
Web 服务器也称为 WWW 服务器,主要功能是提供网上信息浏览服务。在 UNIX 和 Linux 平台下使用最广泛的 HTTP 服务器是 W3C、NCSA 和 Apache 服务器,而 Windows 平台使用 IIS 的 Web 服务器。
跨平台的 Web 服务器有 IBM WebSphere、BEA WebLogic、Tomcat 等。在选择使用 Web 服务器时,应考虑的本身特性因素有性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等。Web 服务器的主要性能指标包括最大并发连接数、响应延迟、吞吐量(每秒处理的请求数)、成功请求数、失败请求数、每秒点击次数、每秒成功点击次数、每秒失败点击次数、尝试连接数、用户连接数等。
5.2 性能计算
随着计算机系统复杂度的不断增长,性能指标也在不断地增长,这也增加了衡量计算机系统性能的难度。如何在众多指标中选取合适的性能指标,以及选择何种衡量方法都成为一项重要的课题,因此也衍生了各种性能评估体系。由于性能指标种类繁多,不可能一一列举,本节主要介绍一些常用性能指标的计算方法。在实际应用时,往往是对这些常用性能指标的复合计算,然后通过算法加权处理得到最终结果。
性能指标计算的主要方法有:定义法、公式法、程序检测法、仪器检测法。定义法主要根据其定义直接获取其理想数据,公式法则一般适用于根据基本定义所衍生出的复合性能指标的计算,而程序检测法和仪器检测法则是通过实际的测试来得到其实际值(由于测试的环境和条件不定,其结果也可能相差比较大)。
有些性能指标,在不同的环境中,其名字相同,但计算方式和结果可能相差甚远,例如,吞吐量、带宽等,在计算机、路由器、交换机和网络中多处出现了有关吞吐量的定义,但其具体的含义不尽相同。
1.MIPS 的计算方法
公式中,Fz 为处理机的工作主频,CPI(Cycles Per Instruction)为每条指令所需的平均时钟周期数,IPC 为每个时钟周期平均执行的指令条数。
例如,如果要计算 Pentium IV/2.4E 处理机的运算速度,因为 Pentium IV/2.4E 处理机的IPC=2(或 CPI=0.5),Fz=2400MHz,所以 MIPSP4/2.4E = IPC′Fz=2′2400 = 4800MIPS。
2.峰值计算
衡量计算机性能的一个重要指标就是计算峰值或者浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。
理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU 的主频决定。 理论浮点峰值 = CPU 主频′CPU 每个时钟周期执行浮点运算的次数′系统中 CPU 数
CPU 每个时钟周期执行浮点运算的次数是由处理器中浮点运算单元的个数及每个浮点运算单元在每个时钟周期能处理几条浮点运算来决定的。
3.等效指令速度
静态指令使用频度指的是在程序中直接统计的计算机速度。动态指令使用频度指的是在程序执行过程中统计的指令速度。在计算机发展的早期,用加法指令的运算速度来衡量计算机的速度。后来发展成为等效指令速度法或吉普森(Gibson)法,在这种方法中,通常加、减法指令占 50%,乘法指令占 15%,除法指令占 5%,程序控制指令占 15%,其他指令占15%。
例如,我国最早研制的小型计算机 DJS-130,定点 16 位,加法速度每秒 50 万次,但没有硬件乘法和除法等指令。用软件实现乘法和除法,速度降低 100 倍左右,则其等效指令速度为
即每秒 2 万次,由于乘法和除法用软件实现,等效速度降低了 25 倍。‘
又如,如果浮点开平方操作 FPSQR 的比例为 2%,它的 CPI 为 100,其他浮点操作的比例为 23%,它的 CPI 4.0,其余指令的 CPI 1.33,则该处理机的等效 CPI 为:100 ′2%+4′23%+ 1.33′75%= 3.92
如果 FPSQR 操作的 CPI 也为 4.0,则其等效 CPI 为:4 ′25%+1.33′75% =2.00
由于改进了仅占 2%的 FPSQR 操作的 CPI,使等效速度提高了近一倍。
5.3 性能设计
本节主要讨论如何利用阿姆达尔解决方案进行系统性能优化及负载均衡方面的知识。
5.3.1 阿姆达尔解决方案
阿姆达尔定律是这样的:系统中对某部件采用某种更快的执行方式,所获得的系统性能的改变程度,取决于这种方式被使用的频率,或所占总执行时间的比例。 阿姆达尔定律定义了采用特定部件所取得的加速比。假定使用某种增强部件,计算机的性能就会得到提高,那么加速比就是如下公式所定义的比率:
加速比反映了使用增强部件后完成一个任务比不使用增强部件完成同一任务加快了多少。阿姆达尔定律为计算某些情况下的加速比提供了一种便捷的方法。加速比主要取决于两个因素:
(1)在原有的计算机上,能被改进并增强的部分在总执行时间中所占的比例。这个值称之为增强比例,它永远小于等于 1。
(2)通过增强的执行方式所取得的改进,即如果整个程序使用了增强的执行方式,那么这个任务的执行速度会有多少提高,这个值是在原来条件下程序的执行时间与使用增强功能后程序的执行时间之比。
原来的机器使用了增强功能后,执行时间等于未改进部分的执行时间加上改进部分的执行时间:
5.3.2 负载均衡
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀地分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。
当用户发现 Web 站点负载量非常大时,应当考虑使用负载均衡技术来将负载平均分摊到多个内部服务器上。如果有多个服务器同时执行某一个任务时,这些服务器就构成一个集群。使用集群技术可以用最少的投资获得接近于大型主机的性能。
1.负载均衡技术的类型
目前,比较常用的负载均衡技术主要有以下几种:
(1)基于特定服务器软件的负载均衡。很多网络协议都支持“重定向”功能,例如,在 HTTP 协议中支持 Location 指令,接收到这个指令的浏览器将自动重定向到 Location 指明的另一个 URL 上。由于发送 Location 指令比起执行服务请求,对 Web 服务器的负载要小得多,因此可以根据这个功能来设计一种负载均衡的服务器。当 Web 服务器认为自己负载较大的时候,它就不再直接发送回浏览器请求的网页,而是送回一个 Location 指令,让浏览器在服务器集群中的其他服务器上获得所需要的网页。
在这种方式下,服务器本身必须支持这种功能,然而具体实现起来却有很多困难。例如,一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送 Location 指令?Location 指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。因此这种方式实际应用当中并不多见,使用这种方式实现的服务器集群软件也较少。
有些特定情况下可以使用 CGI(包括使用 FastCGI 或 mod_perl 扩展来改善性能)来模拟这种方式去分担负载,而 Web 服务器仍然保持简洁、高效的特性。此时,避免 Location 循环的任务将由用户的 CGI 程序来承担。
(2)基于 DNS(Domain Name Server,域名服务器)的负载均衡。通过 DNS 服务中的随机名字解析来实现负载均衡,在 DNS 服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的 Web 服务器,从而达到负载均衡的目的。
DNS 负载均衡的优点是简单易行,并且服务器可以位于互联网的任意位置上,当前使用在包括 Yahoo 在内的 Web 站点上。然而它也存在不少缺点,一个缺点是为了保证 DNS 数据及时更新,一般都要将 DNS 的刷新时间设置得较小,但太小就会造成太大的额外网络流量,并且更改了 DNS 数据之后也不能立即生效;另一个缺点是 DNS 负载均衡无法得知服务器之间的差异,它不能做到为性能较好的服务器多分配请求,也不能了解到服务器的当前状态,甚至会出现客户请求集中在某一台服务器上的偶然情况。
(3)反向代理负载均衡。使用代理服务器可以将请求转发给内部的 Web 服务器,使用这种加速模式显然可以提升静态网页的访问速度。因此也可以考虑使用这种技术,让代理服务器将请求均匀地转发给多台内部 Web 服务器,从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部 Web 服务器,而这种代理方式是多个客户使用它访问内部 Web 服务器,因此也被称为反向代理模式。
实现这个反向代理能力并不能算是一个特别复杂的任务,但是在负载均衡中要求特别高的效率,这样实现起来就不是十分简单的事了。每针对一次代理,代理服务器就必须打开两个连接,一个为对外的连接,一个为对内的连接。因此,当连接请求数量非常大的时候,代理服务器的负载也非常大,最后,反向代理服务器会成为服务的瓶颈。例如,使用 Apache 的mod_rproxy 模块来实现负载均衡功能时,提供的并发连接数量受 Apache 本身的并发连接数量的限制。一般来讲,可以使用它来连接数量不是特别大、但每次连接都需要消耗大量处理资源的站点来进行负载均衡,例如搜寻。
使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,以提供有益的性能;其具备额外的安全性,外部客户不能直接访问真实的服务器。并且实现起来可以采用较好的负载均衡策略,将负载非常均衡地分给内部服务器,不会出现负载集中到某个服务器的偶然现象。
(4)基于 NAT(Network Address Translation,网络地址转换)的负载均衡技术。网络地址转换指的是在内部地址和外部地址之间进行转换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后,外部网络中的计算机就各自与自己转换得到的地址上的服务器进行通信,从而达到负载分担的目的。
地址转换可以通过软件方式来实现,也可以通过硬件方式来实现。使用硬件方式进行操作一般称为交换,而当交换必须保存 TCP 连接信息的时候,这种针对 OSI/RM 网络层的操作就被称为第四层交换。支持负载均衡的网络地址转换为第四层交换机的一种重要功能,由于它基于定制的硬件芯片,因此其性能非常优秀,很多交换机声称具备 400MB~ 800MB 的第四层交换能力;然而也有一些资料表明,在如此快的速度下,大部分交换机就不再具备第四层交换能力了,而仅仅支持第三层甚至第二层交换。
使用软件方式来实现基于网络地址转换的负载均衡则要实际得多,除了一些厂商提供的解决方法之外,更有效的方法是使用免费的自由软件来完成这项任务。其中包括 Linux Virtual Server Project 中的 NAT 实现方式。一般来讲,使用这种软件方式来实现地址转换,中心负载均衡器存在带宽限制,在 100MBps 的快速以太网条件下,能得到最高达 80MBps 的带宽,然而在实际应用中,可能只有 40MBps~60MBps 的可用带宽。
(5)扩展的负载均衡技术。上面使用网络地址转换来实现负载分担,毫无疑问所有的网络连接都必须通过中心负载均衡器,那么如果负载特别大,以至于后台的服务器的数量不再在是几台、十几台,而是上百台甚至更多,这时,即便是使用性能优秀的硬件交换机也会遇到瓶颈。此时问题将转变为,如何将那么多台服务器分布到各个互联网的多个位置,分散网络负担。当然这可以通过综合使用 DNS 和 NAT 两种方法来实现,然而更好的方式是使用一种半中心的负载均衡方式。
在这种半中心的负载均衡方式下,即当客户请求发送给负载均衡器的时候,中心负载均衡器将请求打包并发送给某个服务器,而服务器的回应请求不再返回给中心负载均衡器,而是直接返回给客户,因此中心负载均衡器只负责接受并转发请求,其网络负担就较小了。
2.服务器负载均衡
服务器负载均衡一般用于提高服务器的整体处理能力,并提高可靠性、可用性和可维护性,最终目的是加快服务器的响应速度,从而提高用户的体验度。
负载均衡从结构上分为本地负载均衡(Local Server Load Balance)和全域负载均衡(Global Server Load Balance),前者是指对本地的服务器群做负载均衡,后者是指对分别放置在不同的地理位置、有不同的网络及服务器群之间做负载均衡。
全域负载均衡有以下特点:
(1)解决网络拥塞问题,服务就近提供,实现地理位置无关性;
(2)对用户提供更好的访问质量;
(3)提高服务器响应速度;
(4)提高服务器及其他资源的利用效率;
(5)避免了数据中心单点失效。
5.4 性能评估
性能评估是对一个系统进行各项检测,并形成一份直观的文档,因此性能评估是通过各项测试来完成的。评估的一个目的是为性能的优化提供参考,而性能优化涉及的面很广,也很复杂,而且永无止境。对于不同的应用程序,优化的方法会有一些区别。
5.4.1 基准测试程序
把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序。称为基准测试程序(benchmark)。
(1)整数测试程序:Dhrystone。用 C 语言编写,100 条语句。包括:各种赋值语句,各种数据类型和数据区,各种控制语句,过程调用和参数传送,整数运算和逻辑操作。
VAX-11/780z 的测试结果为每秒 1757 个 Dhrystones,即:1VAXMIPS=1757 Dhrystones/s
(2)浮点测试程序:Linpack。用 FORTRAN 语言编写,主要是浮点加法和浮点乘法操作。用 MFPOPS(Million Floating Point Operations Per Second)表示 GFLOPS、 TFLOPS。
(3)Whetstone 基准测试程序。用 FORTRAN 语言编写的综合性测试程序,主要包括:浮点运算、整数算术运算、功能调用、数组变址、条件转移、超越函数。测试结果用 Kwips 表示。
(4)SPEC 基准测试程序。SPEC 基准测试程序(System Performance Evaluation Cooperative,系统性能评估联盟)由 30 个左右世界知名计算机大厂商所支持的非盈利的合作组织,包括 IBM、AT&T、BULL、Compaq、CDC、DG、DEC、Fujitsu、HP、Intel、 MIPS、Motolola、SGI、SUN、Unisys 等;SPEC 能够全面反映机器的性能,具有很高的参考价值。SPEC 以 AX-11/780 的测试结果作为基数,当前主要的基准测试程序有 SPEC int_base_rate
2000、SPEC fp_base_rate 2000 和 SPEC JBB 2000 等。还有基于某种数据库运行环境下的测试,也是可以参考的数值。在采用通用基准测试程序时,要注意真实的业务流程和使用环境与通用测试基准的业务流程和使用环境的异同,这样,基准测试值才有参考价值。
(5)TPC 基准程序。TPC(Transaction Processing Council,事务处理委员会)成立于 1988年,已有 40 多个成员,用于评测计算机的事务处理、数据库处理、企业管理与决策支持等方面的性能。1989 年以来相继发表的 TPC 基准测试程序包括 TPC-A、TPC-B、TPC-C、TPC-D、TPC-H 和 TPC-W 等。其中 TPC-A 用于在线联机事务处理下更新密集的数据库环境下的性能测试,TPC-B 用于数据库系统及运行它的操作系统的核心性能测试, TPC-C 则用于在线联机事务处理测试,TPC-D 用于决策支持系统测试,TPC-H 是基于 TPC-D 基础上决策支持基准测试,还有 TPC-W 是用于电子商务应用软件测试。
TPC-C 是衡量 OLTP 系统的工业标准。它测试广泛的数据库功能,包括查询、更新和排队袖珍型批处理(mini-batch)事务。这一规范在关键领域十分严格,如数据库透明性和事务处理隔离性。许多 IT 专家把 TPC-C 作为“真实世界”OLTP 系统性能的一个很好的指示器。独立审核员认证基准测试(benchmark)的结果,TPC 还有全套的公开报告。
(6)Linpack 测试。Linpack 是国际上最流行的用于测试高性能计算机系统浮点性能的测试。通过对高性能计算机采用高斯消元法求解一元 N 次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。
Linpack 测试包括三类,Linpack100、Linpack1000 和 HPL。Linpack100 求解规模为 100 阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000 要求求解 1000 阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下做算法和代码上的优化。HPL 即 High Performance Linpack,也叫高度并行计算基准测试,它对数组大小 N 没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其他任何优化方法。前两种测试运行规模较小,已不太适合现代计算机的发展。
HPL 是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模的大小(矩阵大小)、使用 CPU 数目、使用各种优化方法等来执行该测试程序,以获取最佳的性能。HPL 采用高斯消元法求解线性方程组。求解问题规模为 N 时,浮点运算次数为 2/3′N3 -2N2。因此,只要给出问题规模 N,测得系统计算时间 T,峰值=计算量(2/3′N3- 2N2)/ 计算时间 T,测试结果以浮点运算每秒(Flops)给出。HPL 测试结果是 TOP500 排名的重要
依据。
5.4.2 Web 服务器的性能评估
在 Web 服务器的测试中,能够反映其性能的主要包括最大并发连接数、响应延迟和吞吐量(每秒处理的请求数)几个参数。
现在常见的 Web 服务器性能评测方法有基准性能测试、压力测试和可靠性测试。基准测试即采用前面所提到的各种基准程序对其进行测试;压力测试则是采用一些测试工具(这些测试工具的主要特征就是能够模拟足够数量的并发操作)来测试 Web 服务器的一些性能指标,如最大并发连接数,间接测试响应时间,以及每秒钟可以处理的请求数目。通过这种压力测试,不但可以考察 Web 服务器的各项性能指标,而且可以找到服务器的瓶颈所在,然后通过参数调整,让服务器运行得更高效。
IxWeb 是美国 IXIA 公司的一个有关 Web 测试的解决方案,它是一个高性能业务负 载生成与分析应用系统,可在 TCP 和应用层模拟现实世界的业务负载方案,能够对设备 进行强度测试、检验转发策略和验证 4~7 层的性能。IxWeb 通过模拟用户(客户端)来测试 Web 服务器。每一个 IXIA 测试仪端口都有独立的 CPU 和内存,运行 Linux 操作系统,具备完整的 TCP/IP 协议栈,每个端口可以模拟大量的 Web 客户,每个客户能够产生大量的并发连接。它还可以通过同时模拟客户端和服务器端,对内容交换机等设备进行测试。
IxWeb 能够配置会话,以模拟使用路由、交换和 NAT 环境中的用户。为了进一步测试实际应用方案,IxWeb 能够修改 TCP 参数,并提供对用户通过诸如拨号调制解调器和 DSL 等多种接入机制联网进行仿真的功能。通过配置“思考时间”(Think Times,用户操作之间的时间间隔)来对用户的行为进行仿真,还可进一步增加测试的真实性。
IxWeb 中 HTTP 1.0/1.1 支持的方法包括:GET、POST、PUT、HEAD、DELETE,可以修改HTTP 客户端与服务器包头规格。IxWeb 对 SSL 的支持使用户能够模拟访问安全网站的大量SSL 客户端会话。IxWeb 具有生成真正的 SSL 握手和 HTTPS 功能。
IxWeb 能够仿真成千上万个下载大文件的 FTP 用户及提供大量所需数据的相应设备。IxWeb 提供了灵活的用户配置和全面的统计数字,以测定同步 FTP 用户的最大数量,以及内容交换机、负载均衡器、服务器与防火墙的吞吐量。
IxWeb 提供了广泛翔实的实时统计数字及记录日志,并可将其导出到标准文件格式,以便定制报告生成。测试一旦完成,即可以用包括 HTML 在内的多种文件格式生成内容丰富的报告。
5.4.3 系统监视
系统监视的目标是为了评估系统性能。要监视系统性能,需要收集某个时间段内的 3种不同类型的性能数据:
(1)常规性能数据。该信息可帮助识别短期趋势(如内存泄漏)。经过一两个月的数据收集后,可以求出结果的平均值并用更紧凑的格式保存这些结果。这种存档数据可帮助人们在业务增长时作出容量规划,并有助于在日后评估上述规划的效果。
(2)比较基准的性能数据。该信息可帮助人们发现缓慢、历经长时间才发生的变化。通过将系统的当前状态与历史记录数据相比较,可以排除系统问题并调整系统。由于该信息只是定期收集的,所以不必对其进行压缩存储。
(3)服务水平报告数据。该信息可帮助人们确保系统能满足一定的服务或性能水平,也可能会将该信息提供给并不是性能分析人员的决策者。收集和维护该数据的频率取决于特定的业务需要。
进行系统监视通常有 3 种方式。一是通过系统本身提供的命令,如 UNIX/Liunx 中的 w、ps、last,Windows 中的 netstat 等;二是通过系统记录文件查阅系统在特定时间内的运行状态;三是集成命令、文件记录和可视化技术,提供直观的界面,操作人员只需要进行一些可视化的设置,而不需要记忆繁杂的命令行参数,即可完成监视操作,如 Windows 的 Perfmon 应用程序。
目前,已经有些厂商提供专业化的监视平台,将上面 3 种方式集成到一个统一的监控平台,进行统一监控,并提供各类分析数据和分析报表,帮助用户进行性能的评估和诊断。如 IBM 公司提供的 Tivoli、HP 公司提供的 Sitescope 等。