Thursday 28 August 2008

调优 Windows(ZZ)

调优 Windows
http://www.janker.org/knowledge/117.html

您可能需要定制 Windows 系统,以提高服务器的性能。下面,将向您介绍调整 Windows 2003 和 Windows XP 系统配置的技巧。请牢记,这些系统可能会变化,从而导致这些建议过时,并导致您的结果有所不同。

在为了改善性能而进行任何更改之前,请确保已经对当前性能进行了度量。不管您是否关心事务执行速度、响应时间、最大并发用户数或其他一些性能条件,都需要在更改前后,进行足够准确地度量,以了解更改调优参数是否有效。

TcpTimedWaitDelay

TcpTimedWaitDelay 值确定了在 TCP/IP 可释放已关闭的连接并复用其资源之前,必须等待的时间。关闭和释放之间的时间间隔称为 TIME_WAIT 状态或最长分段生命周期的两倍(2MSL)状态。在此期间,重新打开客户机和服务器之间的连接比新建一个连接的开销要小。通过减小该项的值,TCP/IP 可更快地释放已关闭的连接,并可为新连接提供更多的资源。如果由于多个连接处于 TIME_WAIT 状态导致吞吐量较低,从而正在运行的应用程序需要快速释放连接、创建新的连接或是进行调整,请调整这个参数。

缺省值是 0xF0,将等待时间设置为 240 秒(4 分钟)。

最小的推荐值是 0x1E,将等待时间设置为 30 秒。请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。
  2. 将该值设为十进制的 30(十六进制为 0x0000001e)。该值将等待时间设置为 30 秒。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

MaxUserPort

MaxUserPort 值确定了当应用程序请求系统中可用的用户端口时,TCP/IP 能分配的最大端口号。如果系统报告建立套接字出错异常,这可能是由于匿名(临时)端口号不够大引起的,特别是,如果系统打开了大量的端口来构建与 Web service、数据库或其他远程资源的连接。

缺省情况下,Windows 为匿名(临时)端口保留端口号 1024 到 5000

常见的做法是将该值设置为 32768。请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建名为 MaxUserPort 的新 REG_DWORD 值。
  2. 将该值至少设置为十进制的 32768。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

动态储备

动态储备值使系统能自动调整其配置,以接受大量突发的连接请求。如果同时接收到大量连接请求,动态储备可提高受支持的暂挂连接的数量,从而可减少连接失败的数量。

缺省情况下,Windows 不启用动态储备。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注册表子键,然后用以下名称和值创建或设置新的 REG_DWORD 值。
    "EnableDynamicBacklog"=dword:00000001
    "MinimumDynamicBacklog"=dword:00000020
    "MaximumDynamicBacklog"=dword:00001000
    "DynamicBacklogGrowthDelta"=dword:00000010
    这些值通过 20 - 1000 个可用连接启用动态储备支持。可用连接数每次增加 10 个,增量小于可用连接的最小数。
  2. 关闭注册表编辑器。
  3. 停止并重新启动系统。

KeepAliveTime

KeepAliveTime 值控制 TCP/IP 尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。如果需要对丢失接 收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提 高该值以减少开销。

缺省情况下,如果空闲连接 7200000 毫秒(2 小时)内没有活动,Windows 就发送保持活动的消息。通常,1800000 毫秒是首选值,从而一半的已关闭连接会在 30 分钟内被检测到。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 KeepAliveTime 的新 REG_DWORD 值。
  2. 为该值设置适当的毫秒数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

KeepAliveInterval

KeepAliveInterval 值定义了如果未从接收方收到保持活动消息的响应,TCP/IP 重复发送保持活动信号的频率。当连续发送保持活动信号、但未收到响应的次数超出 TcpMaxDataRetransmissions 的值时,会放弃该连接。如果期望较长的响应时间,您可能需要提高该值以减少开销。如果需要减少花在验证接收方是否已丢失上的时间,请考虑减小该值或 TcpMaxDataRetransmissions 值。

缺省情况下,在未收到响应而重新发送保持活动的消息之前,Windows 会等待 1000 毫秒(1 秒)。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 KeepAliveInterval 的新 REG_DWORD 值。
  2. 为该值设置适当的毫秒数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

TcpMaxDataRetranmission

TcpMaxDataRetranmission 值定义了 TCP/IP 通过现有连接重新发送未返回应答的数据段的次数。如果您的网络性能很差,可能需要提高该值以保持有效的通信。如果您的网络性能很好,且通常是由于丢失接收 方而导致数据的丢失,则可以减小该值以减少验证接收方是否丢失所花费的时间。

缺省情况下,Windows 会重新发送未返回应答的数据段 5 次。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 TcpMaxDataRetransmissions 的新 REG_DWORD 值。
  2. 将该值设置为适当的重试次数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

TcpAckFrequency

TcpAckFrequency 值确定了 TCP/IP 发送应答消息的频率。

  • 如果值为 2,则 TCP/IP 将在接收到 2 个分段后发送应答,或是在接收了 1 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
  • 如果值为 3,则 TCP/IP 将在接收到 3 个分段后发送应答,或是在接收了 1 个或 2 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
  • 以此类推。

如果需要通过消除 TCP/IP 应答延迟来缩短响应时间,则将该值设为 1。在这种情况下,TCP/IP 会立即发送对每个分段的应答。如果您的连接主要用于移动大量数据,而 200 毫秒的延迟并不重要,则可以减小该值以降低应答的开销。

缺省情况下,Windows 使用值 2(每隔一个分段应答一次)。该值的有效范围是 0 到 255,其中 0 表示使用缺省值(2)。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\AdapterId 注册表子键(其中 AdaperId 表示将受影响的网络适配器),然后创建或设置名为 TcpAckFrequency 的新 REG_DWORD 值。
  2. 根据希望每发送几个分段返回一个应答,为该值设置相应的数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

No comments: