47、Web 性能调优全攻略

Web 性能调优全攻略

1. 性能调优概述

在当今数字化时代,网站性能的优化至关重要。网站性能调优的需求广泛,从紧急修复到为现有环境创造更多增长空间都涵盖其中。其中一个重要原因是,随着访问量的增加,硬件预算却可能保持不变。通过对应用程序进行精细调整,可以在需求增长时充分发挥现有平台的潜力。

理想情况下,应在网站投入生产之前进行首轮性能调优。这样能确保应用程序在生产环境中表现良好,并提前了解其性能限制。以下是进行渐进式更改时可考虑的主要配置点:
- 网络组件:增加或稳定带宽和数据包处理能力;使用 NIC 团队和集群路由器添加容错功能;利用 Windows Server 2008 网络处理卸载功能;添加广域数据服务(WDS)第 4 - 7 层压缩。
- 存储:扩展存储容量和 I/O 速度,并部署容错功能。
- 处理器:更改处理器类型或为服务器添加处理器。
- 内存:更改内存类型或为服务器添加内存。
- 操作系统:停止不必要的服务以节省资源,并调整设置以优先处理 IIS 流量。
- 负载均衡:通过配对服务器和集群服务器来增加系统容量和容错能力,以应对额外需求。
- 应用程序分区:将 Web 应用程序划分为多个层级,并将这些层级托管在单独的专用服务器上,以增加系统容量。
- IIS 和网站:配置 IIS 和网站以最大化性能和稳定性。

2. 操作系统优化

2.1 选择合适的操作系统架构

对于更高的需求,可考虑使用 Windows Server 2008 的 64 位版本。64 位系统比 32 位系统能直接访问更多的虚拟和物理内存,并且每个时钟周期能处理更多数据,从而实现更具扩展性和高性能的解决方案。无论使用哪种架构,都要确保操作系统通过热修复和服务包保持最新,以影响稳定性和性能。

2.2 禁用不必要的服务

由于 Windows Server 2008 采用模块化架构,通常不应有太多不必要的服务在运行。可以通过以下步骤禁用不必要的服务:
1. 点击“开始”按钮,在“开始搜索”框中输入“services.msc”,然后按“Enter”键打开“服务”控制台。
2. 右键单击要禁用的服务,将“启动类型”更新为“手动”或“已禁用”。

以下是通常在 IIS 服务器上不需要的服务列表:
| 服务名称 | 描述 |
| — | — |
| 应用程序体验 | 处理应用程序启动时的应用程序兼容性缓存请求。 |
| 基础筛选引擎 | 管理防火墙和 IPsec 策略并实现用户模式筛选。停止或禁用此服务将显著降低系统安全性,并可能导致 IPsec 管理和防火墙应用程序出现不可预测的行为。 |
| 桌面窗口管理器会话管理器 | 提供新的 Windows 主题的一部分,在运行与 Vista Aero 不兼容的应用程序时恢复为基本样式。 |
| 分布式链接跟踪客户端 | 维护计算机内或网络中计算机之间 NTFS 文件的链接。 |
| IKE 和 AuthIP IPsec 密钥模块 | 托管 Internet 密钥交换(IKE)和经过身份验证的 Internet 协议(AuthIP)密钥模块,用于 IPsec 中的身份验证和密钥交换。停止或禁用此服务可能导致 IPsec 失败并危及系统安全。 |
| IP 帮助程序 | 提供通过 IPv4 网络的自动 IPv6 连接。如果此服务停止,计算机只有在连接到本地 IPv6 网络时才有 IPv6 连接。 |
| IPsec 策略代理 | 强制执行通过 IP 安全策略管理单元或命令行工具 netsh ipsec 创建的 IPsec 策略。如果停止此服务,可能会遇到网络连接问题。 |
| Net.Pipe 侦听器适配器 | 通过 net.pipe 协议接收激活请求,并将其传递给 Windows 进程激活服务。 |
| Net.Tcp 侦听器适配器 | 通过 net.tcp 协议接收激活请求,并将其传递给 Windows 进程激活服务。 |
| 网络列表服务 | 识别计算机已连接的网络,收集和存储这些网络的属性,并在这些属性更改时通知应用程序。 |
| 打印后台处理程序 | 将文件加载到内存中以便稍后打印。大多数 IIS 服务器没有打印机访问权限,因此可以有效禁用此服务。 |
| 远程注册表 | 允许远程用户修改此计算机上的注册表设置。如果此服务停止,只有本地用户可以修改注册表。 |
| 二次登录 | 允许使用备用凭据启动进程。如果此服务停止,这种登录访问将不可用。 |
| Windows 错误报告服务 | 允许在程序停止工作或响应时报告错误,并提供现有解决方案。如果此服务停止,错误报告可能无法正常工作。 |
| Windows 防火墙 | 帮助保护计算机,防止未经授权的用户通过 Internet 或网络访问计算机。大多数组织都有外围网络防火墙,如果不采用主机防火墙策略,可以关闭此服务。 |

在禁用这些服务之前,请仔细考虑 Web 服务器是否需要它们。

2.3 调整应用程序性能配置

可通过以下步骤调整系统属性控制台(sysdm.cpl)中应用程序性能区域的配置选项:
1. 点击“开始”按钮,在“开始搜索”框中输入“Sysdm.cpl”,然后按“Enter”键。
2. 在“系统属性”对话框的“控制面板”中,选择“高级”选项卡,然后点击“性能”部分的“设置”按钮。
3. 在“视觉效果”选项卡上,选择“调整为最佳性能”。这将减少显示窗口和菜单时系统的负载。
4. 在“高级”选项卡上,确保选择“后台服务”。因为 IIS 进程作为后台服务运行,默认情况下会选择“后台服务”。
5. 同样在“高级”选项卡上,点击“虚拟内存”部分的“更改”按钮,并根据以下原则配置分页文件:
- 理想情况下,将分页文件放在与系统和/或引导分区不同的磁盘或磁盘阵列上。应使用 RAID - 0(条带集)阵列来存储分页文件。
- 避免将分页文件放在容错驱动器上,如 RAID - 1 或 RAID - 5 卷。分页文件不需要容错功能,并且一些容错系统由于将数据写入多个位置而导致数据写入速度较慢。
- 不要在同一物理磁盘驱动器的不同分区上放置多个分页文件。
- 将初始分页文件大小设置为至少是物理 RAM 量的 1.5 倍。
- 将最大分页文件大小设置为与初始大小相等,以防止分页文件更改大小并使硬盘驱动器碎片化。

2.4 TCP 堆栈调优选项

Microsoft 在 Windows Server 2008 中显著改进了网络堆栈,网络性能更加稳定、灵活和快速。与以前的操作系统相比,具有以下优点:
- 自动 TCP/IP 性能调优,使用改进的算法准确评估与网络通信的最佳方式。
- 能够将 TCP/IP 处理从 CPU 卸载到兼容的 NIC 适配器上,为其他服务节省 CPU 周期。
- 接收方扩展(RSS)通过将数据包接收处理负载分散到多个处理器上,实现更快的网络性能。
- IPv4 和 IPv6 网络堆栈的双层实现。

除了网络堆栈的改进,还可以配置设置来微调服务器。在对注册表进行任何更改之前,应进行全面测试,并且很少会在没有先在受控实验室环境中证明更改的价值(和稳定性)的情况下将此类更改引入生产环境。

以下是一些可以优化 IIS 服务器 TCP 网络服务堆栈的方法:
| 注册表值 | 描述 |
| — | — |
| TCPWindowSize | TCP 传输突发中的最大数据量(以字节为单位);范围从 1 到 65,535 字节,使用以下注册表值:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\TcpWindowSize。常见接口的默认值为:千兆位(1,000 Mbps) - 65,535;以太网(100 Mbps) - 16,384;其他 - 8,192。此值应设置为:端到端网络带宽(字节/秒)×带宽延迟乘积(往返延迟以秒为单位)。 |
| Tcp1323Opts(窗口缩放) | 要使用上面的 TCPWindowSize 值将 TCP 窗口大小提高到 65K 以上,请将以下注册表值设置为 1:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Tcp1323Opts。如果没有此注册表值,TCPWindowSize 值将限制为 65,535 字节。 |
| MaxHashTableSize | TCP 哈希表跟踪打开的 TCP 连接状态。在安装期间设置,默认大小是通过将处理器数量乘以 128 计算得出的。注册表值为:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\MaxHashTableSize。此注册表值的最大值为 0x10000 或 65,536 字节。对于高性能服务器,无论处理器数量如何,都应使用最大值。 |
| MaxUserPort | Windows 为每个 IP 地址提供 5,000 个端口连接。您的站点可能需要更多并发端口连接,可以将以下注册表值提高到 65,534:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort。 |

2.5 存储调优选项

优化磁盘读写可以显著提高服务器的性能。首先要选择合适的硬件,并选择能够承受的最佳背板解决方案。如今的选项包括高速技术,如串行高级技术附件(SATA),吞吐量为 1.5 - 3 Gbits/秒,以及小型计算机系统接口(SCSI),吞吐量为 1.6 - 2.5 Gbit/秒。

在操作系统中,有几个选项可用于调整磁盘 I/O:
| 注册表值 | 描述 |
| — | — |
| CountOperations | 启用或禁用测量磁盘和网络 I/O 的进程和系统计数器。当在物理、逻辑、网络接口、IP 和 TCP 级别分析 I/O 速率时,这些计数器通常是冗余的,因此在这些系统上关闭这些计数器。要关闭进程和系统 I/O 计数器,请创建一个注册表值并将其值设置为 0(REG_DWORD),注册表路径为:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\I/O System\CountOperations。请注意,此设置不会影响物理和逻辑磁盘计数器、网络接口、IP 和 TCP 计数器。需要重新启动才能使此设置生效。 |
| DontVerifyRandomDrivers | 通过将以下注册表值设置为 1(REG_DWORD)来阻止存储驱动程序随机审核存储配置:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\Memory Management\DontVerifyRandomDrivers。 |
| NumberOfRequests | 通过设置 NumberOfRequests 值来控制特定网络适配器的 I/O 请求。将以下注册表值设置为 16 到 255 之间的数字可以提高磁盘阵列性能。注册表路径为:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MINIPORT_ADAPTER\Parameters\DeviceN\NumberOfRequests,将 MINIPORT_ADAPTER 替换为适配器名称。 |

3. IIS 服务优化

3.1 Http.sys 优化

Http.sys 是 IIS 的前端,由于 HTTP 协议栈在内核模式与用户模式的工作进程分离,Http.sys 使用自己的错误日志记录方案,该方案由内核模式约定控制。使用内核模式错误日志记录的事件示例包括:
- 连接超时。
- 用户模式下的工作进程意外终止或关闭其应用程序池;未完成的请求将被记录。
- 当 IIS 没有立即销毁客户端在这些连接上的最后一个请求的响应完成之前终止的连接时(“僵尸会话”)。

Http.sys 处理的内核模式请求处理有一个单独的日志文件,与记录网站活动的文件不同。Http.sys 错误日志的默认位置是:%SystemRoot%\System32\LogFiles\HTTPERR。

要更改 Http.sys 错误日志记录的配置,需要编辑注册表。Http.sys 在启动时仅读取一次配置。Http.sys 错误日志记录配置是全局的,将影响所有 Web 流量。

控制 Http.sys 错误日志记录的三个参数位于以下注册表项中:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters。

以下是可以设置的三个注册表值及其描述:
| 注册表值 | 描述 |
| — | — |
| EnableErrorLogging | 默认值为 True。不建议更改此值。 |
| ErrorLogFileTruncateSize | 默认值为 1 * 1,024 * 1,024 字节。该值不能小于此值,并且必须以字节为单位指定。通过增加此数字,可以最小化在日志文件达到截断大小时切换到新日志文件所使用的处理器和磁盘 I/O 开销。 |
| ErrorLoggingDir | 默认值为 \systemroot\System32\LogFiles。指定时,此值必须是完全限定的目录字符串,但可以使用 \systemroot。例如:C:\LogFiles 与 \systemroot\LogFiles 相同。将此文件的位置更改为仅保存日志文件的专用磁盘,通过将顺序磁盘操作聚合到单个磁盘主轴上来最大化磁盘 I/O 性能。 |

除了上述日志优化之外,还可以调整 HTTP\Parameters 键中的其他值,以进一步调整 Http.sys 服务接收和响应原始请求的方式。以下是优化 Http.sys I/O 处理的选项:
| 注册表值 | 描述 |
| — | — |
| UriEnableCache | 此注册表值启用内核模式响应和片段缓存。对于大多数工作负载,应保持缓存启用。如果预计响应和片段缓存利用率非常低,可以考虑禁用缓存。要禁用片段缓存,将此值的数据更改为 0。 |
| UriMaxCacheMegabyteCount | 指定内核缓存可用的最大内存。当设置为 0 时,操作系统会调整缓存可用的内存量。请注意,指定大小仅设置最大值,系统可能不允许缓存增长到指定大小。 |
| UriMaxUriBytes | 这是内核缓存中条目的最大大小,通过将请求保留在内存中而不是硬盘上,为请求提供更快的响应。大于此注册表值中设置的数据的响应或片段将不会被缓存。默认值为 262,144 字节(256 KB)。如果安装的内存大于 2 GB,应增加此限制。如果内存有限,并且大条目正在挤出小条目,则降低此限制可能会有所帮助。 |
| UriScavengerPeriod | Http.sys 缓存通过清除过程刷新,该过程根据此注册表值中设置的时间段触发。将清除周期设置为较高的值可以减少清除扫描的次数。但是,随着较旧、访问频率较低的条目被允许保留在缓存中,缓存内存使用量可能会增加。将此周期设置为过低的值会导致更频繁的清除扫描,并可能导致过多的刷新和缓存抖动。默认值为 120 秒。如果数据是静态的,可以考虑将此值增加多达 100%。 |

以下是与连接选项相关的 Http.sys 注册表值:
| 注册表值 | 描述 |
| — | — |
| IdleConnectionsHighMark、IdleConnectionsLowMark、IdleListTrimmerPeriod | 管理处理 Http.sys 连接的结构,确保最小和最大容量以及审核容量的轮询周期。 |
| MaxConnections | Http.sys 允许的并发连接数。每个连接使用非分页池内存。在专用 Web 服务器上,可以将此值设置得高于默认值(默认值设置得较为保守),以使服务器能够处理更多的同时请求。 |

3.2 应用程序池优化

IIS 7.0 在 IIS 6.0 引入的优化应用程序池和工作进程性能的选项基础上进行了扩展。可以使用多种工具来调整应用程序池,包括 WMI 脚本、web.config 文件、appcmd.exe 和 IIS 管理器。

要查看使用 AppCmd 设置应用程序池设置的选项,请在命令窗口中输入以下行(将 DefaultAppPool 替换为服务器上任何应用程序池的名称):

appcmd.exe set AppPool “DefaultAppPool” /?

要使用 IIS 管理器访问调优窗口,请执行以下步骤:
1. 打开 IIS 管理器。
2. 在“连接”窗格中,双击要管理的服务器。
3. 点击目标服务器下的“应用程序池”节点。
4. 在中间窗格中,右键单击要调优的应用程序池,然后选择“高级设置”以查看调优选项。

以下是调优 IIS 应用程序池时需要考虑的一些关键设置:

3.2.1 应用程序池 CPU 调优选项
参数 描述
限制 应用程序池中工作进程在以下指定的时间间隔内允许使用的最大 CPU 时间百分比(以千分之一为单位)。0 表示禁用此限制,这是默认设置。如果网站代码不稳定且随着时间消耗 CPU 资源,可以使用此设置。
限制间隔(分钟) 监控应用程序池允许使用的 CPU 时间限制的时间间隔。在此间隔结束时,计数器将重置。0 表示禁用 CPU 监控,默认设置为 5 分钟。
处理器关联启用 强制此应用程序池的工作进程作为线程在特定处理器上生成。在托管未使用 .NET 托管代码(具有多线程意识)编写的网站的多处理器系统上使用此设置。
处理器关联掩码 十六进制值或 CPU ID,表示应用程序池将为新工作进程分配的目标 CPU。
3.2.2 应用程序池进程模型调优选项
参数 描述
空闲超时(分钟) 在空闲超过指定时间后关闭工作进程。这可以在内存有限的系统上节省一些资源,但在重 CPU 负载下需要频繁生成新工作进程的情况下不建议使用,因为进程创建会带来开销。
加载用户配置文件 当为 True 时,IIS 将加载“身份”字段中指定帐户的用户配置文件。这是 IIS 7.0 的新功能,允许根据应用程序池身份帐户配置文件进一步配置安全性和日志记录。
3.2.3 应用程序池回收调优选项
参数 描述
禁用重叠回收 当为 True 时,现有工作进程将先关闭,然后再启动另一个。在应用程序不支持多个实例时使用此设置。
禁用配置更改时的回收 停止伴随应用程序池配置更改而进行的回收操作。
私有内存限制(KB,千字节) 工作进程在导致应用程序池回收之前可以消耗的最大私有内存量。值为 0 表示没有限制。
最大工作进程数 可以在 Web 花园模式下控制工作进程的总数。在 Web 花园模式下,多个工作进程在单个应用程序池下处理请求负载。在某些情况下,一个工作进程不足以处理负载(表现为 CPU 使用率低和响应时间长),增加工作进程数量可以提高吞吐量和 CPU 使用率。在托管多个站点时可以考虑使用 Web 花园模式。多个工作进程在其中一个意外崩溃时也可以提供更高的可靠性,并且几乎不会导致服务完全中断。Web 花园模式比多个预分配的应用程序池更容易设置和控制。默认情况下,一个工作进程处理所有请求。
启用 Ping 启用对应用程序池的健康监控,通过定期向池发送确认请求(根据以下两个设置)。如果池无响应,则进行回收。默认值为 True,这是大多数池的优秀选项。
Ping 最大响应时间(秒) 工作进程响应健康监控 Ping 的最大时间。如果工作进程未响应,IIS 将终止该进程。默认设置为 90 秒。
Ping 周期(秒) 健康监控 Ping 之间的间隔。
关闭时间限制(秒) 工作进程完成处理请求并关闭的时间。如果进程超过此限制,IIS 将强制终止该进程。默认设置为 90 秒。
启动时间限制(秒) 工作进程启动的时间。如果进程在变得响应之前超过此限制,IIS 将重新启动该进程。默认设置为 90 秒。
定期时间间隔(分钟) 基于时间的定期回收。默认值为 1,740。如果应用程序不稳定且随着时间变得无法操作,可以使用此值。否则,将其设置为 0 以停止应用程序池基于此时间间隔自动回收。
请求限制 基于(累积)请求数的定期回收。0 表示没有限制。使用此值来限制请求数,以便在服务器停止响应时重置应用程序池。
特定时间 在给定的时间设置进行回收。可以提供一天中的多个时间或一个条目。用于在维护窗口期间回收应用程序池。
虚拟内存限制(KB,千字节) 基于内存的回收(默认禁用),如果工作进程达到此处定义的限制,则允许回收。0 表示不基于虚拟内存使用进行回收。

通过以上对操作系统和 IIS 服务的优化,可以显著提高网站的性能和稳定性。在下半部分,将继续介绍网站层面的优化策略。

4. 网站优化

4.1 HTTP 页面头优化

IIS 发送的每个网页都包含 HTTP 页面头,这些额外的数据会在页面流发送之前添加到页面流中,用于告知访问者的浏览器如何处理网页。可以使用两种类型的 HTTP 页面头来优化网站性能:内容过期和 HTTP 持久连接。

4.1.1 HTTP 持久连接

浏览器通常会发出多个请求来下载整个网页。为了提高服务器性能,大多数浏览器会请求服务器在多个请求之间保持连接打开,这就是 HTTP 持久连接功能。

如果没有 HTTP 持久连接,一个包含多个元素(如图形)的页面,浏览器可能需要为每个元素建立一个单独的连接。这会使浏览器变得更慢且响应性更差,尤其是在慢速连接的情况下。

HTTP 持久连接对于集成安全或基于连接的身份验证服务(如集成 Windows 身份验证 (IWA))是必需的。如果为使用集成 Windows 身份验证的网站禁用 HTTP 持久连接,对该网站的请求将失败。

4.1.2 内容过期

在可能的情况下,考虑设置文件过期日期。内容过期是 IIS 确定在网页内容过期后是否返回请求网页的新版本的方式。IIS 在发送每个网页之前会根据你提供的内容过期设置进行标记,最终用户的浏览器会翻译这个过期标记。内容过期的选项包括:
- 立即:内容交付后立即过期。
- 之后:设置内容在多少天后过期。
- 特定日期:设置内容过期的具体日期。

通过设置内容过期(非立即过期),可以将二次访问的加载时间减少 50% 到 70%。此设置不会影响动态生成的内容。

4.1.3 启用 HTTP 头调优

要启用内容过期或 HTTP 持久连接,请按照以下步骤操作:
1. 打开 IIS 管理器。
2. 双击要管理的目标服务器。若要将选项应用于所有服务器,继续执行步骤 3;若要将这些设置应用于单个网站,双击目标服务器下的“站点”节点,然后选择要管理的网站。
3. 确保中心面板显示“功能视图”选项卡(位于中心窗格的左下角)。
4. 在“HTTP 响应头”窗格中,右键单击空白处,然后从上下文菜单中选择“设置常见 HTTP 响应头”选项。
5. 选择最适合网站的配置选项,然后单击“确定”。

4.2 带宽限制

带宽限制可以在全局网站节点和每个单独的网站上设置。在全局网站级别,可以限制服务器上所有网站可用的总网络带宽。也可以在网站级别设置带宽限制,以限制每个网站消耗的带宽量。默认情况下,任何级别的带宽限制都是禁用的,这也是推荐的设置。

如果某个特定网站需要最小带宽,或者某个网站使用过多带宽影响了其他网站,那么带宽限制是一个可选的解决方案。此外,添加服务器网卡或将网站/应用程序卸载到另一台服务器也可以缓解带宽瓶颈。

设置带宽限制的步骤如下:
1. 打开 IIS 管理器。
2. 双击要管理的目标服务器。
3. 双击目标服务器下的“站点”节点。
4. 选择要管理的网站。
5. 确保中心面板显示“功能视图”选项卡(位于中心窗格的左下角)。
6. 在“操作”窗格的“管理网站\配置”组中,单击“限制”链接。以下是控制网站带宽使用的选项:
- 限制带宽使用(字节):选择此选项以根据带宽使用限制允许访问网站的流量量。在相应的框中输入一个整数值(范围为 1,024 到 2,147,483,647 字节),以限制网站流量。
- 连接超时(秒):在框中输入一个数字,设置服务器在断开非活动用户连接之前等待的时间(秒)。此设置可确保在 HTTP 协议无法关闭连接时,所有连接都会被关闭。
- 限制连接数:选择此选项以限制允许访问网站的连接数。在相应的框中输入一个整数值(范围为 0 到 4,294,967,295,0 表示无限制),以限制网站的连接数。如果连接数波动较大,设置为无限制可以避免持续的管理工作,但如果连接数超过系统资源,系统性能可能会受到影响。限制网站的连接数可以保持性能稳定。

4.3 输出缓存

IIS 7.0 新增了输出缓存配置功能,可提高性能。当用户请求网页时,IIS 会处理请求并将页面返回给客户端浏览器。启用输出缓存后,处理后的网页副本会存储在 Web 服务器的内存中,后续对同一资源的请求将直接从内存中返回该副本,无需每次都重新处理页面。这在内容依赖外部程序处理(如通用网关接口 (CGI) 程序)或网站包含来自外部源(如远程共享或数据库)的数据时非常有用。

在 IIS 7.0 的新输出缓存管理中,缓存项会保留在内存中,但如果服务器资源不足,缓存项会被清除。如果服务器确定某个页面足够受欢迎值得缓存,下次用户请求该资源时,页面将重新缓存。

4.3.1 访问输出缓存调优选项

要访问输出缓存的调优选项,请按照以下步骤操作:
1. 打开 IIS 管理器。
2. 双击要管理的目标服务器。
3. 双击目标服务器下的“站点”节点。
4. 选择要管理的网站。
5. 确保中心面板显示“功能视图”选项卡(位于中心窗格的左下角)。
6. 在中心窗格中,双击“IIS”组中的“输出缓存规则”图标。
7. 在“操作”窗格中,单击“编辑功能设置”链接。缓存选项如下:
- 启用缓存:启用 IIS 输出缓存,将缓存响应存储在用户模式下。IIS 输出缓存类似于 ASP.NET 输出缓存,但它是原生输出缓存,性能比 ASP.NET 中的托管输出缓存更高。
- 启用内核缓存:启用内核缓存,将缓存响应存储在内核模式下。从内核缓存返回响应时无需过渡到用户模式,可提高性能。
- 最大缓存响应大小(字节):指定用户模式和内核模式缓存中缓存响应的最大大小。默认值为 262,144 字节。
- 缓存大小限制(MB):配置用户模式和内核模式缓存的大小限制。
8. 进行任何更改后,单击“确定”。

4.3.2 创建新的缓存规则

建立功能设置后,可以添加缓存规则。要创建新的缓存规则,请在“操作”窗格中单击“添加”,并完成配置窗口。选项如下表所示:
| 元素名称 | 描述 |
| — | — |
| 扩展名 | 显示缓存规则适用的文件名扩展名。 |
| 用户模式行为 | 显示规则的用户模式缓存行为:
- 缓存直到更改:内容将被缓存,直到 IIS 收到文件更改通知。
- 缓存特定时间段:内容将被缓存特定的持续时间。
- 防止所有缓存:用户模式缓存已禁用。
- 不缓存:未配置用户模式缓存。 |
| 内核模式行为 | 显示规则的内核模式缓存行为:
- 缓存直到更改:内容将被缓存,直到 IIS 收到文件更改通知。
- 缓存特定时间段:内容将被缓存特定的持续时间。
- 防止所有缓存:用户模式缓存已禁用。
- 不缓存:未配置用户模式缓存。 |
| 条目类型 | 显示输出缓存规则的范围。值为“本地”或“继承”。 |

4.4 HTTP 压缩

如果网络带宽是一个问题,可以考虑使用 IIS 压缩服务。HTTP 压缩会在 IIS 服务器发送数据之前对其进行压缩,客户端浏览器在呈现数据给网站访问者之前对其进行解压缩。使用 HTTP 压缩有以下好处:
- 减少发送的数据量(提高带宽利用率)。
- 提高页面显示速度(增加传输时间)。
- 允许将 Web 应用程序整合到更小的 Web 农场中(减少服务器数量)。

HTTP 压缩要求客户端浏览器支持 HTTP 1.1。大多数当前浏览器支持 HTTP 1.1 并且默认启用该功能,较旧的浏览器可能不支持。较旧的浏览器仍然可以从您的站点检索文件,但无法利用 HTTP 压缩。

在生产服务器上启用 HTTP 压缩之前,必须对 Web 服务器上的所有应用程序进行全面测试。

4.4.1 安装 IIS 压缩服务

使用 IIS 管理器,可以在全局网站级别应用压缩设置。以下是安装 IIS 压缩服务的步骤(如果服务器将使用 HTTP 压缩,则需要安装这些服务):
1. 使用 Windows 开始菜单打开“Windows 服务器管理器”向导(appwiz.cpl)。
2. 双击“连接”窗格中的“角色”节点。
3. 在中心窗格中找到并打开“Web 服务 (IIS)”组。
4. 在“Web 服务 (IIS)”组的“角色服务”子组中,单击“添加角色服务”。
5. 从可用服务中,选中以下模块旁边的框:
- Web 服务器\性能\静态内容压缩。
- Web 服务器\性能\动态内容压缩。
6. 单击“下一步”,然后单击“安装”。安装角色服务后,单击“关闭”。

4.4.2 配置网站的 HTTP 压缩

现在服务已安装,可以为网站配置压缩。以下是在 IIS 中启用 HTTP 压缩的步骤:
1. 打开 IIS 管理器。
2. 双击要管理的目标服务器。若要将选项应用于所有服务器,继续执行步骤 3;若要将这些设置应用于单个网站,双击目标服务器下的“站点”节点,然后选择要管理的网站。
3. 确保中心面板显示“功能视图”选项卡(位于中心窗格的左下角)。
4. 在中心窗格中,双击“IIS”组中的“压缩”图标。
5. 在中心窗格中,选中要使用的压缩类型的复选框。
当在服务器级别设置压缩设置时,有更多选项需要考虑:
- 启用静态内容压缩:配置 IIS 压缩静态内容。与动态响应不同,压缩后的静态响应可以在多个请求之间缓存到磁盘上,而不会降低 CPU 资源。下次请求时,可以从磁盘检索压缩文件,这提高了性能,因为 CPU 不必再次压缩文件。
- 启用动态内容压缩:配置 IIS 压缩动态内容。动态应用程序响应的压缩会影响 CPU 资源,因为 IIS 不会缓存动态输出的压缩版本。如果为动态响应启用压缩,并且 IIS 收到包含动态内容的资源请求,IIS 每次请求时都会重新压缩响应。由于动态压缩会消耗大量的 CPU 时间和内存资源,因此仅在具有慢速网络连接的客户端但有空闲 CPU 时间的服务器上使用。
- 仅压缩大于(字节):定义 IIS 要压缩的最小文件大小。默认大小为 256 字节。
- 缓存目录:定义本地目录的路径,静态文件在压缩后将缓存到该目录,直到文件过期或内容更改。出于安全原因,此临时目录必须位于 NTFS 格式分区的本地驱动器上。该目录不能被压缩,也不应共享。
- 每个应用程序池磁盘空间限制(MB):设置 IIS 在压缩静态内容时要使用的最大空间(兆字节)。当定义了“限制磁盘空间使用”设置时,IIS 会在达到设置的限制时自动清理临时目录。默认限制为每个应用程序池 100 MB。

当在网站级别进行调优时,只能通过选中“启用动态内容压缩”或“启用静态内容压缩”旁边的复选框来打开或关闭压缩。
6. 在“操作”窗格中,单击“应用”。

需要注意的是,动态内容不能被压缩后再缓存。压缩动态内容时,每次访问网页都必须生成并压缩内容。在托管动态内容时,应该评估压缩动态内容的成本/效益比。虽然可以更好地管理带宽,但会消耗 CPU 处理资源。如果您的站点广泛使用动态内容,并且处理器利用率(% 处理器时间)已经很高,可能需要先升级服务器的处理器,然后再启用 HTTP 压缩。

4.5 网站连接限制

使用网站的“性能”选项卡,IIS 提供了无限数量的并发连接选项,并且可以在 Web 服务器(全局)级别和特定网站上限制连接数。对于内部 IIS 服务器,将该值设置为无限制可以避免在连接负载超过预期水平时进行额外的基准测试和管理工作。对于内部 IIS 服务器,除非应用程序是关键任务且需求很高,否则默认情况下应将此设置保持为无限制。

对于面向外部的站点,如果连接数超过系统资源,IIS 性能将急剧下降,影响所有会话。所有 IIS 系统都有性能上限。对于面向 Internet 的服务器,应提供最大连接数,以防止拒绝服务情况。为了得出一个现实的数字,需要在高峰性能期间建立并发连接的基准,然后增加 10% - 20% 作为误差余量。

4.5.1 访问网站调优选项

要访问网站调优选项,请按照以下步骤操作:
1. 打开 IIS 管理器。
2. 双击要管理的目标服务器。
3. 双击目标服务器下的“站点”节点。
4. 选择要管理的网站。
5. 在“操作”窗格的“管理网站”组中,单击“高级设置”。
6. 在“行为”组中,根据网站的性质对“连接限制”字段进行必要的调整。

理想情况下,应该对 Web 应用程序和服务器进行测试,以确定在给定连接/活动级别下的性能预期。例如,如果一个面向 Internet 的应用程序实现了 200 个并发连接,并且性能指标表明服务器群的利用率达到 100%,那么将连接速率限制为 95%(即 190 个并发连接)将确保在请求突发时服务器保持响应。

综上所述,通过对操作系统、IIS 服务和网站配置的全面优化,可以显著提升网站的性能、稳定性和用户体验。在实际操作中,应根据具体的业务需求和服务器环境,灵活运用这些优化策略,并进行充分的测试和监控,以达到最佳的性能效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值