使用 IIS 5.0 调整 Web服务器的艺术与科学(附录1)
发表于:2007-06-30来源:作者:点击数:
标签:
附录 1: 性能 设置 您可以调整 IIS Metabase 内容及注册表设置来调整 Web 服务器 的性能。如果打算改变注册表,则除非没有其它方法可用,否则请勿使用注册表编辑器。注册表编辑器会忽略系统管理工具提供的标准 安全 设置。这些安全设置可防止您输入冲突的设
附录 1:
性能设置
您可以调整 IIS Metabase 内容及注册表设置来调整 Web
服务器的性能。如果打算改变注册表,则除非没有其它方法可用,否则请勿使用注册表编辑器。注册表编辑器会忽略系统管理工具提供的标准
安全设置。这些安全设置可防止您输入冲突的设置值,或可能降低性能或损害系统的设置值。直接编辑注册表会导致严重且难以预计的后果,会导致系统无法启动,而必须重新安装 Windows 2000。使用 adsutil 公用程序 (可在
.netpub\AdminScripts 目录中找到) 来改变 IIS 也会发生同样的状况。若要设置或定制 Windows 2000 及 IIS 5.0,请尽量使用 [控制面板] 或 Microsoft Management Console (MMC)。
Metabase 设置
这份清单包括用来调整 Web 服务器最重要的 Metabse 设置。使用 ADSI 接口可以获取及改变它们。这些设置大多会在重新启动 Web 服务之后才生效。相关信息,请参阅说明 IISReset 公用程序的小节。
AppAllowDe
bugging-这个属性会指定服务器上是否启用了 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 属性值,决定了在您的服务器上聚合的通讯端数目。请将它设成高数字,并监视性能。默认值是根据A
clearcase/" target="_blank" >cceptEx 操作系统参数及指定在 ServerSize Metabase 内容中的服务器大小而定。如果将 ServerSize 设为 1,则这个属性的默认值是 40。如果将 ServerSize 设为 2,则这个属性的默认值是 100。这个属性的有效值范围是 5 到 1000。
ServerSize-这个属性会从每天处理的客户端请求数目观点来指定服务器的规模。值 0 表示一个预计每日接收少于 10,000 个请求的小型网站;值 1 表示每日处理10,000 到 100,000 个请求的中型网站;值 2 则指定一天处理超过 100,000 个请求的大型站点。由于默认值为 1,所以若想最大化您的服务器可以处理的请求数目,请将这个属性设为 2。您可以使用 UI 来调整此设置。请开启您站点的内容表,并选取 [性能] 选项卡后,将 [性能调整] 滑动杆调整为[100,000 以上]。
注册表设置
本节列出当您在调整Web服务器时,应该特别注意的注册表设置。其中包括设置的注册表路径 (存放在同一位置上),以及设置的名称、范围、默认值及每一个设置的作用说明。您必须在您的服务器上重新启动网络服务,才能使新的 Inetinfo 设置生效。相关信息,请参阅本文中的〈IISReset 公用程序〉小节。
Registry Path:
HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet
\Services
\Inetinfo
\Parameters
DisableMemoryCache REG_DWORD
范围: 0, 1默认:0
请确定此参数在所有生产服务器上全都设为 0。如果将此参数设为 1,则会停用缓存。虽然在侦错时停用缓存是很有用的,但却会严重损害生产服务器的性能。这个参数无法通过 IIS 管理单元设置。
ListenBackLog REG_DWORD
范围: 1 到 300默认:15
这个参数会指定在一个队列中,等待服务器处理的最大使用中连接数目。增强的 IIS 功能通常会免去使用或修改这个项目的需要,但是如果遇到超大量的使用率,则你可以将此值调整到 300。
MaxPoolThreads REG_DWORD
范围: 0 - 无限制默认:4
这个参数会指定每一个处理器要建立的缓冲池线程数目。一条缓冲池线程会看守一个网络请求并处理它。MaxPoolThreads 计数不包括 ISAPI 应用程序使用的线程。在默认情况下,只有 4 个 CGI 应用程序可以同时执行。如果执行很多个 CGI 应用程序,则必须增加此值才能提高生产力。您可以将 UsePoolThreadForCGI 值 (在 ..\Services\W3SVC\Parameters 下)设为 FALSE (0);但是因为它在 CGI 应用程序高用量期间会明显地降低性能,所以有点危险。一般来说,最好不要为每一个处理器设置超过 20 条线程。
MaxCachedFileSize REG_DWORD
范围: 0 - 无限制 (以字节测量)默认:262,144 字节 (256KB),如果注册表中没有值的话。
这个参数会决定能放在缓存中的最大文件大小。IIS 不会缓存大于 MaxCachedFileSize 字节的文件。如果您正在执行大型的专用 Web 服务器,则可以将此值添加到注册表,以增加缓存可以保留的文件大小。
MemCacheSize REG_DWORD
范围: 0 MB - 总计 MB 的可用 RAM默认:50% 的可用内存,如果注册表中没有值的话
这个参数会指定 IIS 将用于其本身文件缓存的最大内存容量。如果 IIS 不需要这么多内存,则剩余的内存可供其它应用程序使用。如果注册表中没有此值,则 IIS 最多只会使用到 Web 服务器上可用内存的一半(此容量是每 60 秒动态计算一次)。如果您正在执行大型的专用 Web 服务器,则可以将此值添加到注册表,并增加 IIS可以使用的内存容量。将此对象添加到注册表时,必须以 MB 为单位指定大小。
ObjectCacheTTL REG_DWORD
范围: 0 - 无限制默认: 30 秒
这个参数会控制「存留时间」(TTL) 设置,其定义了对象 (包括文件) 保留在高速缓存中的时间长度。如果内存缓存中有个对象经过一段定义的时间之后,都没有被引用,则该对象会从缓存中被清出。这个值默认并不包括在注册表中。如果想要改变它,则必须手动添加。如果系统内存有限,或服务器的内容是动态的,则可使用较低的 TTL 来防止系统内存被用于缓存大量的短暂对象。将此值设为 0xFFFFFFFF 会停用对象缓存回收程序,并让缓存的对象保留在缓存中,直到被覆盖为止。如果您的服务器有充足的系统内存,而且您的资料大多是静态的,则停用缓存回收程序会很有用。
PoolThreadLimit REG_DWORD
范围: 0 - 无限制默认: 2 * # MB
这个参数指定可以在系统中建立的最大缓冲池线程数目。一条缓冲池线程会看守一个网络请求并处理它。PoolThreadLimit 是包括所有 IIS 线程的硬件限制。PoolThreadLimit 恒大于或等于 MaxPoolThreads。
Registry Path:
HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet
\Control
\SecurityProviders
\SCHANNEL
ServerCacheTime REG_DWORD
范围: 0 - 无限制 (以毫秒测量)默认: 300,000 毫秒 (5 分钟)
这个参数会决定一个 SSL 有效期持续的时间量。一旦建立一个 SSL 有效期,客户端要重新连接到此有效期只需花费初始连接来源成本的一小部份。如果 SSL 有效期到期,则必须完整建立一个新的 SSL 有效期。这个参数默认不存在。若要改变它的行为,必须将它添加到注册表。您必须评估您预计 SSL 有效期持续的时间,然后将此参数设为较长一些。不要将超时时间设置得远大于预计时间,否则这个缓存会开始储存旧资料。如需进一步讨论,请参阅本文中的〈安全性〉小节。
原文转自:http://www.ltesting.net