日期:2009-06-27  浏览次数:21001 次

  附录 1:性能设置

  您可以调整 IIS Metabase 内容及注册表设置来调整 Web 服务器的性能。如果打算改变注册表,则除非没有其它方法可用,否则请勿使用注册表编辑器。注册表编辑器会忽略系统管理工具提供的标准安全设置。这些安全设置可防止您输入冲突的设置值,或可能降低性能或损害系统的设置值。直接编辑注册表会导致严重且难以预计的后果,会导致系统无法启动,而必须重新安装 Windows 2000。使用 adsutil 公用程序 (可在 Inetpub\AdminScripts 目录中找到) 来改变 IIS 也会发生同样的状况。若要设置或定制 Windows 2000 及 IIS 5.0,请尽量使用 [控制面板] 或 Microsoft Management Console (MMC)。

  Metabase 设置

  这份清单包括用来调整 Web 服务器最重要的 Metabse 设置。使用 ADSI 接口可以获取及改变它们。这些设置大多会在重新启动 Web 服务之后才生效。相关信息,请参阅说明 IISReset 公用程序的小节。

  AppAllowDebugging-这个属性会指定服务器上是否启用了 ASP 侦错。如果启用,则IIS 应用程序线程将序列化,这表示每个应用程序一次只能执行一条线程。这会对 Web 服务器的性能产生不利的影响。您可以在所有生产服务器上将这个属性设为 FALSE (默认)。

  ASPAllowSessionState-默认值是 TRUE。将它调整为 FALSE 可产生更高的性能。一旦改变后,开发人员必须明确地在需要使用「有效期」对象的页面上置换这个设置。若要改变单一页面上的默认设置,开发人员可以使用页面顶端的<% @EnableSessionState=False %>。若要改变这个选项,请务必通知开发人员。

  ASPBufferingOn-默认值是 TRUE。这个属性的默认行为是允许所有来自应用程序的输出在缓冲区被转存到客户端浏览器之前,先收集在缓冲区中。如果这个属性被设置为 FALSE,则来自 ASP 脚本文件的输出会在客户端使用浏览器时,写入该客户端浏览器。您必须确定这个属性在所有生产环境 Web 服务器上都设置为 TRUE。详细信息,请参阅本文中的〈调整及疑难排除的建议〉小节。

  ASPThreadGateEnabled (默认值是 FALSE) 及 ASPProcessorThreadMax (默认值是 25)- 当您将 ASPThreadGateEnabled 设为 TRUE 时,便会启用线程传送,而且 IIS 5.0 会动态地改变工作线程的数目,以响应改变的工作量。IIS 允许每一个 ASP 进程拥有的最大工作线程数目是 ASPProcessorThreadMax乘以您服务器上的 CPU 数目。请调低此值,并监视性能。如果性能降低,请调回 ASPProcessorThreadMax 值。相关信息,请参阅本文中的〈线程传送〉小节。

  ASPRequestQueueMax-在 IIS 5.0 中,队列中的默认请求限制已增加到 3,000个。这个设置的作用会根据应用程序的行为而定。如果请求的执行时间很短,而且在队列中的时间将很短,则增加此限制是合理的作法。

  ASPQueueConnectionTestTime-这是 IIS 5.0 的新设置,对于 Web 应用程序的性能帮助很大。在 IIS 4.0 中,一个请求是当它从队列中删除时无条件地开始执行。在 IIS 5.0 中,如果有个请求在队列中存留的时间超过队列连接测试时间,则服务器在开始执行之前,会先检查该客户端是否仍在连接中。这个功能可以处理不耐久候的用户在同一页上多次尝试而用满请求队列的问题。默认值是 3 秒。根据您的服务器正在执行的 Web 服务器类型,决定是否改变这个值。执行时间很长的 ASP 页也会使用 Response.IsClientConnected 方法来检查客户端是否仍在等待页面的剩余部份。执行时间很长的页面应谨慎地使用 Response.Flush,以确定用户能知道该页仍在执行中,而且正在执行生产性的工作。「响应」对象方法的相关信息,请参阅 IIS 5.0 联机文档。

  ASPSessionMax 及 ASPSessionTimeout-其默认行为是将单一有效期的长度限制为 20 分钟,而不限制并行有效期的数目。在利用有效期的应用程序上缩小「有效期等候超时」以减少服务器所需的负担时要特别小心,但是如果并行有效期增加到难以处理的比例,就会产生增加「有效期最大值」的需要。

  ASPScriptEngineCacheMax-在内存中缓存的脚本文件引擎之最大数目的新默认值是 125。这不包含目前执行的脚本文件引擎。请根据应用程序中的内容类型调整此值。如果有几千个不同的页面,则增加缓存大小可能会有些效果,因为最常请求的网页可以随时供人存取。存取脚本文件引擎可以免去将模板重新编译为字节程序代码。

  在设置这个 Metabase 属性之前,您应了解 ASP 使用「ASP Script Engine Cache」及「ASP Template Cache」的方法。进一步讨论,请参阅〈附录 3:ASP 缓存〉。

  ASPScriptFileCacheSize-这个属性会指定要存放在「ASP Template Cache」中预先编译的脚本文件个数。如果是 0,则不会有任何脚本文件可缓存。若是 -1,则所有请求的脚本文件都会被缓存。默认值是 250 个。如果您有许多不同的 ASP 页,请增加此值。请勿将此属性的值设为 0。这会关闭所有 ASP 缓存,并严重地损害服务器的性能。

  ASPTrackThreadingModel-这个 Metabase 属性会指定 IIS 是否将检查您的应用程序瞬间产生之任一组件的线程处理模式。如果让这个 Metabase 属性保持它的默认值 (FALSE),则可避免由于追踪 ASP 的线程处理模式所造成的负担,而您可以在您的 ASP 应用程序中看见性能的提升。不过,如果这个属性是设为 FALSE,则您打算设置「应用程序」范围而建立的任何组件,必须聚集为不用线程处理的 Marsaller。如果没有聚集 Marshaller,则当您尝试瞬间产生该组件时,ASP 就会产生错误。此外,如果这个属性是 FALSE,则缺少 OnStartPage 或 OnEndPage 方法且瞬间在您 ASP 应用程序中产生的所有对象,会在该释放的时间前释放。这应该可以提高应用程序的可扩展性。这个属性在 IIS 4.0 中的默认值是 TRUE。相关信息,请参阅 IIS 5.0 联机文档。

  CacheISAPI-这个属性显示 ISAPI 扩展 在使用之后是否会缓存在内存中。如果这个属性的值是 TRUE,则 .dll 文件会留在缓存中,直到服务器停止为止。如果此值为 FALSE,则一旦不再使用该 .dll 文件,便会从内存中卸载它。是否会缓存 ISAPI 扩展,是依据将它们加载内存供使用时其属性值而定。因此,如果这个属性在扩展已经被加载且缓存之后才改变,则此改变对该扩展不会有影响。
将这个属性设为 FALSE 会对侦错有帮助,但请确定这个属性在所有生产 Web 服务器上都设为 TRUE。为每一个请求重新加载 ISAPI extension .dll 文件,不但相当昂贵而且会降低性能。

  ConnectionTimeout-这个属性会指定服务器在中断一条非使用中的连接之前,将等待的秒数。默认值是 900 (15 分钟)。因为开启的连接会降低性能,所以请考虑降低此值,并监视您的服务器在改变之后会有什么效果。

  MaxEndpointConnections-这个属性会指定「听取」通讯端的最大数目,该通讯端会聚集在网络端点上。例如,如果将此值设为 15,则单一连接点可以建立最多 15 条连接,即使连接到此连接点的域超过一个。这个属性值的下限及 ServerListenBackLog 属性的值,决定了在您的服务器上聚合的通讯端数目。请将它设成高数字,并监视性能。默认值是 100 个。

  ServerListenBackLog-这个属性会指定可以由队列处理的额外通讯端数目。这个属性值的下限及 MaxEndpointConnections 属性值,决定了在您的服务器上聚合的通讯端数目。请将它设成高数字,并监视性能。默认值是根据AcceptEx 操作系统参数及指定在 ServerSize Metabase 内容中的服务器大小而定。