代理方案
本小节提供正向代理、透明代理和反向代理的方案。
正向代理
在正向代理中,客户端 Web 浏览器知道代理的存在。例如在 Internet Explorer 中,这是通过在 Internet 选项中设置代理服务器或自动检测设置来实现的。当 Web 客户端知道代理时,它们直接打开到代理的连接,并向代理发送针对 Internet 上的位置的请求。(例如,Internet Explorer 在发送 HTTP 1.1 请求时,将会打开两个到代理的连接。)当 ISA Server 接收到针对某服务器的请求时,它会打开一个到该服务器的连接,并将该连接再次用于从其他客户端向相同服务器发出的其他请求。这样就形成了一个星形连接拓扑。
这种方案的性能优势在于,它允许高度重用连接,从而最小化打开的连接的数量以及连接速率。
透明代理
在透明代理中,客户端 Web 浏览器不知道代理的存在。它们以为所发送的信息是直接路由到 Internet 上的服务器的,中间没有代理。明确地说,Web 客户端通过打开与目标 Web 站点的连接来直接访问 Internet 服务器。这样导致了连接速率显著提升,因为在用户请求某个新的服务器上的页面之后,Web 浏览器将关闭它与当前 Web 服务器的连接,然后打开与新的 Web 服务器的新的连接。这是透明代理的典型特征,并对 ISA Server 性能产生影响。通常,透明代理中的客户端连接速率大约要比正向代理中的客户端连接速率高三倍,从而每请求所消耗的处理器周期大约是后者的两倍。
透明代理是很流行的方案,因为它很容易部署,对于拥有异类客户群的 Internet 服务提供商(ISP)尤其如此。由于这个原因,此方案能够显著提高性能。
一般情况下,与正向代理相比,用于透明代理的 ISA Server 需要两倍的 CPU 资源量。
反向代理
反向代理或 Web 发布的工作方式与正向代理相同,只不过方向是入站而不是出站。在该方案中,ISA Server 充当由 Internet 上的客户端访问的 Web 站点。客户端不知道它们正在访问的 Web 站点其实是一个代理。与正向代理一样,由于高效的连接重用,连接数量和连接速率都保持在最低水平。反向代理用于 Web 服务器的安全发布,比如:Internet 信息服务 (IIS)、Outlook Web Access、SharePoint Portal Server 等等。
从性能的角度看,反向代理具有类似正向代理的特征。主要区别在于,从 ISA Server 流向 Internet 用户的大多数流量需要大量的 Internet 连接。正如下一小节将要解释的那样,当启用了 Web 缓存时,正向代理和反向代理具有不同的性能影响。
Web 缓存
Web 缓存是在所有 Web 代理方案中用于改善 ISA Server 性能的特性。但是在对出站方案(正向和透明代理)和入站反向代理方案启用缓存时,对性能改善的影响有所不同。
正向(透明)和反向缓存之间的主要区别在于缓存的用途。正向(和透明)缓存旨在通过把频繁访问的可缓存内容放在靠近用户的地方,从而节省带宽成本和缩短响应时间。反向缓存用于卸载后端 Web 服务器的负荷。反向缓存不会缩短响应时间,反而会增加没有缓存的对象的延迟。
就节省而言,正向缓存节省对 Internet 上的 Web 服务器的访问尝试,即从缓存中满足那些访问尝试,从而节省所需的 Internet 链路带宽。例如,如果缓存字节命中率为 20%,内部链路上的峰值吞吐率为 10 Mbps,Internet 链路上的峰值吞吐率将仅为 8 Mbps。
注意:缓存对象命中率是在代理所提供的全部对象中,从缓存中提供的那一部分对象所占的比率。同样,缓存字节命中率是在代理提供的全部字节中,从缓存中提供的那一部分字节所占的比率。普遍的平均值约为 35% 的对象命中率和 20% 的字节命中率。
反向缓存有助于 Web 服务器的合并,从而同时降低硬件和管理成本。例如,如果 80% 的 Web 站点数据是静态和可缓存的,动态对象需要的 CPU 周期是静态对象的四倍,那么利用反向代理将把 Web 服务器的数量减少 100%。
注意:假设静态对象需要 X 个 CPU 周期,则动态对象需要 4X 个周期。如果 100 个请求中有 80 个是静态的,100 个请求所需要的周期总数为 80X + (100-80)4X = 160X,用于静态内容的请求的 50% 将由 ISA Server 缓存来满足。
正向缓存和反向缓存之间的另一个区别是缓存的工作集的数量。在反向缓存中,客户端空间是无限的,但是服务器空间仅包含几个 Web 站点和相对较少的对象。在大多数情况下,ISA Server 可设计为具有合理的内存和磁盘空间来在缓存中存储所有驻留的可缓存内容,以便仅把动态的不可缓存内容指向驻留的 Web 服务器。更为可取的是,所有缓存都可以保留在内存中,并从内存中提供。
在正向缓存中,服务器空间包含无限个 Web 站点和 Web 对象,因此缓存工作集是无限的。为了容纳这样大的工作集,必须定义很大的磁盘缓存。接下来的几个小节将描述如何规划和优化用于正向和反向缓存的 Web 缓存容量。
优化正向缓存内存和磁盘
在正向缓存中,对象命中率和峰值 HTTP 请求速率用于按照如下公式确定必需的磁盘数量:
例如,如果峰值请求速率为每秒 900 个请求,对象命中率为 35%,则需要四个磁盘。
注意:上述公式中的 100 是个经验值,表示平均的执行物理磁盘(最高每分钟 10,000 转)每秒可提供 100 次 I/O 操作。每分钟 15,000 转的更快的磁盘每秒能够执行 130-140 次 I/O 操作。
推荐使用相同类型和相等容量的专用磁盘。如果使用 RAID 存储子系统,应该将它配置为 RAID-0(无容错)。推荐使用小磁盘,最好不超过 40 GB。
调整缓存内存更加复杂。在缓存方案中,内存用于:
未决的请求对象。未决的请求对象与 ISA Server 计算机的客户端连接数量成比例。在大多数情况下,它小于客户端连接数量的 50%。每个未决的请求大约需要 15 KB。对于 10,000 个并发连接,Web 代理内存工作集分配给未决请求对象的空间不超过
50% × 10,000 × 15 KB = ~ 75 MB。
缓存目录。缓存目录包含每个缓存对象的一个 32 字节的条目。缓存目录的大小是直接通过缓存的大小和平均响应大小来确定的。例如,包含 7,000,000 个对象(平均每个对象约 ~7 KB)的 50 GB 缓存需要 32 × 7,000,000 = 214 MB。
内存缓存。内存缓存的目的是直接从内存满足针对频繁访问的缓存对象的请求,从而减少磁盘缓存读取。但是由于可缓存的内容在正向缓存中是无限的,内存缓存大小对性能的影响有限。
默认情况下,内存缓存是物理总内存的 10%,并且是可配置的。一般情况下,我们推荐使用默认设置,除非出现硬页面错误。硬页面错误可能导致严重的性能下降。当使用了缓存时,解决这种情况的最简单的办法是降低内存缓存的大小。
考虑到该信息,可使用以下过程来调整缓存内存大小:
按前一小节所解释的那样调整磁盘缓存大小。
估计以下各项合计所需要的内存:
未决的请求对象(10% × 15 KB * 估计的峰值连接数)。
缓存目录大小(32 * 缓存中的 URL 数)。
内存缓存大小(默认为总内存的 50%)。
每个连接将需要大约 2 KB 的系统内存,并需要额外的 50 MB 作为起始内存(50 MB + 2 KB * 估计的峰值连接数)。
运行在系统中的其他进程至少需要 100 MB。
监视内存使用并相应地更改内存缓存大小。信息性性能计数器包括:
ISA Server CacheMemory Cache Allocated Space (KB)
ISA Server CacheMemory URL Retrieve Rate (URL/sec)
ISA Server CacheMemory Usage Ratio Percent (%)
ISA Server CacheURLs in Cache
MemoryPages/sec
MemoryPool Nonpaged Bytes
MemoryPool Paged Bytes
Process(WSPSRV)Working Set
TCPEstablished Connections
优化反向缓存内存和磁盘
在反向缓存中,工作集大小与正向缓存相比要小得多,因此将其全部放在内存里是合乎逻辑的。工作集的大小是缓存所驻留的 Web 站点中的可缓存对象的总量。磁盘和内存缓存大小推荐约为包含所有可缓存对象的工作集大小的两倍,同时考虑到磁盘分配中的碎片和缓存刷新策略。例如,一个 500 MB 的工作集需要 1000 MB 的磁盘缓存和 1,500MB 的内存,并将内存缓存大小设置为 66%。
由于大多数缓存读取都从内存缓存中满足,磁盘上的 I/O 频率是很低的。在大多数情况下,单个物理磁盘就足够了,不会形成瓶颈。
使用 /3GB Boot.ini 开关
对于内存超过 2 GB 的大型系统,Windows Server 2003 和 Windows 2000 Advanced Server 提供了 3GB RAM 的优化特性。该特性将进程内存空间划分为 3 GB 的应用程序内存和 1 GB 的系统内存。该特性使进程能够从用户空间中超过 2 GB 的 RAM 中获益,并通过向 Boot.ini 文件添加开关 /3GB 来启用。(有关详细信息,请参阅 Microsoft 知识库中的文章 Q171793。)
该特性可能对 ISA Server 有好处,特别是对于承载大型网站的反向缓存。然而,使用该特性减小了未分页池(减小到 128 MB 而不是 256 MB)的最大大小,从而减少了最大的并发 TCP 连接数。
Web 身份验证
执行 Web 身份验证的方法有许多种,各对性能有不同的影响。下表总结了每种方法的优点和缺点。
从