修改注册表键值提升IIS的性能

      上篇:《修改Metabase.xml文件提升IIS性能
      和上篇一样,这些注册表键值的修改还是需要和实际的网站的实际情况想对应的,比如说这个站是动态的还是静态的,每个页面的文件有多大,站点的内容是不是时时更新的等等。提升IIS性能要对症下药。
      DisableMemoryCache
      作用:禁用服务器缓存。要确保在所有产品服务器上将此参数设置为 0。如果将此参数设置为 1,那么就会禁用静态文件缓存。尽管禁用缓存可能会对调试有用,但这样做会严重降低产品服务器的性能。
      注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
      数据类型:REG_DWORD
      默认值:0(已禁用)
      范围:0 - 1
      MaxCachedFileSize
      作用:确定可以放在缓存中的文件的最大大小。IIS 不缓存大于 MaxCachedFileSize 字节的文件。如果您正在运行专用的大型 Web 服务器,您可能需要将此值添加到注册表中,以提高缓存中可以保存的文件大小。
      注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
      数据类型:REG_DWORD
      默认值:256 KB (262,144 bytes)
      MemCacheSize
      作用:指定 IIS 用来作为其文件缓存的内存的最大量。如果 IIS 不需要这么多内存,可以留给其他应用程序使用。如果注册表中没有此值,IIS 用作缓存的量不超过 Web 服务器上可用内存的一半(是每隔 60 秒动态地计算出来的)。如果您正在运行专用的大型 Web 服务器,您可能需要将此值添加到注册表中,以提高 IIS 可以使用的内存量。当您将此对象添加到注册表时,必须以兆字节为单位指定此大小。
      注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
      数据类型:REG_DWORD
      默认值:大约为可用物理内存的一半,以兆字节为单位
      范围:0 - 2500MB
      ObjectCacheTTL
      作用:控制静态文件缓存的生存时间 (TTL) 设置,该设置定义对象(包括文件)存放在缓存中的时间长短。如果内存缓存中的对象在所定义的时段内未被引用,则该对象将被清除出缓存。默认情况下,此值未包括在注册表中。如果您希望更改此默认值,则必须手动添加。如果系统内存有限,或者服务器内容是动态的,您可以使用一个较低的 TTL 来防止系统内存被用于缓存大量动态的对象。将值设置为 0xFFFFFFFF 将禁用对象缓存清理程序并允许缓存对象保留在缓存中,直到它们被覆盖为止。如果服务器有足够的系统内存而且数据是相对稳定的,则禁用缓存清理程序将很有用。其他站点可以选择折衷,将此值提高到几分钟。
      注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
      数据类型:REG_DWORD
      默认值:30(秒)
      范围:0 - 4,294,967,295(无限制)
      PoolThreadLimit
      作用:PoolThreadLimit 指定可以在 Inetinfo.exe 进程中创建的 I/O 工作线程的最大数量,该设置将限制同时连接的数量。IIS 将 PoolThreadLimit 设置为计算机中当前 RAM 的兆字节数量的两倍。如果此值大于 256,则使用 256。如果注册表中已经有该值,那么它就会覆盖 IIS 的计算值。每个池线程都监视网络请求并对其进行处理,处理方法是,发回静态文件或者将该请求传递到 ISAPI 扩展 DLL(如 ASP)或传递到通用网关接口 (CGI)。如果 ISAPI 扩展同步对请求进行处理,它将需要花很长时间来处理请求,而且会占用工作线程,这样 IIS 处理其他请求的工作线程数会变少。因此,高质量编码的 ISAPI 扩展(如 ASP)实现它们自己的线程池,将请求放在队列中,并使用其自己的线程异步对请求进行处理,这样就不会占用 IIS 工作线程了。一般来说,如果您发现默认限度 256 个线程不够,那么 ISAPI 扩展的编码质量可能较差,占用了 IIS 工作线程。
      PoolThreadLimit 是包括所有 IIS 工作线程(包括 HTTP、FTP、NNTP 和 SMTP 服务)的硬性限制。PoolThreadLimit 总是大于或等于 MaxPoolThreads。
      ASP 线程池是单独的一组线程。其大小受 AspProcessorThreadMax 配置数据库设置的控制。未处理的 ASP 请求的最大数量是 AspRequestQueueMax 和AspProcessorThreadMax 的总和。
      PoolThreadLimit 是包含所有 IIS 线程的硬性限制,它始终大于或等于 MaxPoolThreads。
      注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
      数据类型:REG_DWORD
      默认值:2 * # MB
      范围:0 - 4,294,967,295(无限制)
      MaxPoolThreads
      作用:MaxPoolThreads 指定为每个处理器创建的 I/O 工作线程的数量。每个池线程都监视网络请求并对其进行处理。MaxPoolThreads 计数不包括 ISAPI 应用程序使用的线程;它只表示可用于处理静态文件请求的工作线程数量。IIS 将按需要创建更多线程,以处理 ISAPI 请求。IIS 工作线程的总数不得大于 PoolThreadLimit。
      默认情况下,只能同时运行四个 CGI 应用程序。如果运行多个 CGI 应用程序,应该增加该值以提高吞吐率。可以将 UsePoolThreadForCGI 的值(在 ..\Services\W3SVC\Parameters 下)设置为 false(或 0),但这有点危险,因为在大量使用 CGI 应用程序时性能会明显降低。通常,每个处理器最好不要创建超过 20 个线程。
      注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
      数据类型:REG_DWORD
      默认值:4
      范围:0 - 4,294,967,295(无限制)
      ListenBackLog
      作用:指定在队列中允许的等待服务器处理的活动连接的最大数量。通常没有必要使用或修改此项,虽然在频繁使用的情况下将此值最多提高到 300 会非常有益。
      注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
      数据类型:REG_DWORD
      默认值:15
      范围:1 - 250