摘自:http://www.ezloo.com/2008/12/metabase_iis_performance.html
Metabase.xml文件是IIS的设置文件,每个网站已经IIS的设置都在这个下面,所以在修改这个文件之前要把这个文件备份一下。这个文件在C:\WINDOWS\system32\inetsrv\Metabase.xml,前篇的启用IIS的静态压缩也可以在文件下设置,也可以在IIS的图形界面下设置。
对IIS的性能优化要对症下药,对不同的网站有不同的优化方法,在分析你网站的特点的情况下,然后对Metabase.xml文件里面的参数进行调节,提高IIS的性能。AppAllowDebugging
作用:指定在服务器上是否启用 Active Server Page (ASP) 调试。在启用此属性的情况下,IIS 应用程序线程是序列化的;对于每个应用程序,一次只允许执行一个线程。序列化线程会对 Web 服务器性能产生负面影响。建议您在所有产品服务器上将此属性设置为 false。
注意:当允许进行服务器端调试时,将串行化 IIS 应用程序线程:对于每个应用程序,同一时间只允许运行一个线程。这会影响繁忙站点的服务器性能。
AspBufferingOn
作用:该属性指定 ASP 应用程序的输出是否需要缓冲。如果将该值设置为 true,在缓冲区刷新到客户端浏览器之前,应用程序的所有输出都集中到缓冲区里。启用了缓冲,ASP 应用程序就必须在客户端浏览器收到任何输出前处理完所有的 ASP 脚本。因此,启用了缓冲的应用程序比没有启用缓冲的似乎要慢一些,尽管启用缓冲的脚本所用的总时间更少。所以,如果启用了缓冲,那么请考虑使用 ASP 内置的 Response 对象的 Flush 方法在处理脚本的同时将内容一份份的传递给用户。
注意如果将该属性设置为 false,那么 ASP 脚本的输出一旦可用就会输出到客户端浏览器。如果没有启用缓冲,那么所有修改现有的 HTTP 头或生成新头的方法必须在内容的主体传送到客户端浏览器之前执行。如果启用了缓冲,这个限制就没有必要了。建议您在所有产品服务器上将此属性设置为 true。
AspQueueConnectionTestTime
作用:IIS 将所有的 ASP 请求放置到队列中。如果请求在队列中等待的时间比 AspQueueConnectionTestTime 属性指定的时间(以秒为单位)长,则 ASP 将在执行请求前检查确定客户端是否仍是连接的。如果客户端已断开连接,则不处理该请求并且从队列中删除该请求。
注意:多数情况下,用户不会等待处理 ASP 页面超过几秒的时间。虽然最长等待时间随用户不同而不同,但通常可接受的最长时间是大约 10 秒。可以使用 AspQueueConnectionTestTime 属性来确保 IIS 不浪费时间来处理已被用户放弃的请求。当处于 ASP 将要开始处理脚本的状态时,该属性对于使 ASP 进行有效处理非常有用。一旦脚本在运行,应用程序仍然应该继续使用 ASP 内置 Response 对象的 IsClientConnected 方法在合适的时候对客户端连接进行检查。
AspRequestQueueMax
作用:该属性指定了允许进入队列的并发 ASP 请求的最大数目。在队列占满时,任何试图请求 ASP 文件的客户端浏览器都将收到 HTTP 500"服务器太忙"的错误。
注意:在 IIsWebService 级别上设置该属性可运用于所有级别上的所有进程内的和共用的进程外应用程序项。进程内的和共用的进程外应用程序忽略 IIsWebServer 级别及更低级别上的配置数据库设置。但是,如果该项是进程外的隔离应用程序,则使用 IIsWebServer 级别或更低级别的设置。
AspScriptEngineCacheMax
作用:该属性指定了 ASP 页面将在内存中保持缓存的脚本引擎的最大数目。根据应用程序中的内容的类型调整默认值。(默认值不包括当前正在运行的脚本引擎)如果有成千上万的不同页, 您会体验到提高缓存大小的一些好处:大多数频繁请求的页都可以轻松地访问到。脚本引擎缓存的好处意味着您可以无需将模板重新编译为字节代码。
AspScriptFileCacheSize
作用:该属性指定了要缓存的预编译脚本文件数。如果设置为 0,则不缓存任何脚本文件。如果设置为 4294967295,则缓存所有脚本文件。该属性用于调整性能,依赖于可用内存数和脚本文件传输量。
注意:配置数据库将无穷大表示为 DWORD 值 4294967295 (0xFFFFFFFF);VBScript 则将无穷大表示为十六进制值 &HFFFFFFFF。以前的 IIS 版本将无穷大表示为 -1。
AspSessionMax
作用:属性指定了 IIS 允许的最大并发会话数。当达到该限制时,如果客户端试图与 IIS 建立新连接,则客户端将接收到错误信息(HTTP 500"服务器太忙")。
注意:配置数据库将无穷大表示为 DWORD 值 4294967295 (0xFFFFFFFF);VBScript 则将无穷大表示为十六进制值 &HFFFFFFFF。以前的 IIS 版本将无穷大表示为 -1。ASP 需要超过保留所有会话所需数量一定量的内存。虽然可以使用 AspSessionMax 来限制该内存超出,但是通常情况下使用AspSessionTimeout属性来管理 IIS 中会话对象的生存期会更合适,一旦达到限制将拒绝客户端浏览器。
AspSessionTimeout
作用:属性指定了完成最后的与 Session 对象相关的请求后,保留该对象的时间(以分钟为单位)。可以使用 ASP 内置 Session 对象的 Timeout 属性来在脚本中覆盖该属性。
注意:可以使用 AspSessionTimeout 来很好的调整 ASP 应用程序。由于 Session 对象消耗内存资源,因此使用该属性来限制单个 Session 的生存期可以使应用程序具有更好的可缩放性。
AspProcessorThreadMax
作用:该属性指定 IIS 可创建的每个处理器的最大工作线程数。(IIS 所允许的每个 ASP 进程的工作线程的最大数量是 AspProcessorThreadMax 乘以服务器上处理器的数量。可以降低此值然后监视性能。如果性能降低,请恢复 AspProcessorThreadMax 原来的值。)
注意:该设置通常会明显地影响 Web 应用程序的可扩展性和服务器的性能。因为该属性定义了可同时执行的 ASP 请求的最大数量,所以除非 ASP 应用程序扩展调用外部组件,该设置都将保持默认值。在这种情况下,可以增加 AspProcessorThreadMax 的值。这样做允许服务器创建更多的线程来处理更多的并发请求。如果更改了此属性的值,则必须停止然后重新启动 Web 服务器实例以使更改生效。该属性的万维网发布服务 (WWW 服务) 设置在所有级别上适用于所有的进程内的和共用的进程外应用程序节点。对于进程内的和共用的进程外应用程序,忽略 Web 服务器或更低级别上的配置数据库设置。但是,如果该节点是进程外的隔离应用程序,则使用 Web 服务器级别或更低级别的设置。
AspTrackThreadingModel
作用:该属性指定了 IIS 是否检查应用程序创建的任意组件的线程模块。
注意:该配置数据库属性通常最好保留默认值 (false),以便 ASP 不使用系统资源来跟踪线程模块,ASP 应用程序提供最好的性能。如果将该属性设置成 false,并且允许所创建的组件访问应用程序的作用域,则这些组件必须聚合自由线程封送拆收器。如果不聚合自由线程封送拆收器,则当创建组件实例时 ASP 将生成错误。有关该主题的详细信息,请参阅 Platform SDK 中的"建造 ASP 组件"。将该属性设为默认值 (false) 的另一个原因是,任意在 ASP 应用程序中创建的没有 OnStartPage 或 OnEndPage 方法的对象都比其他的要发布的早并且会降低应用程序的可缩放性能。
CacheISAPI
作用:该属性指示在第一次使用 ISAPI 扩展后是否在内存中进行缓存。如果将该属性的值设置为 true,则 ISAPI 扩展一旦载入将一直驻留在缓存中,直到服务器停止工作。如果将该属性的值设置为 false,则若不再使用 ISAPI 扩展,就将其从内存中卸载。是否对 ISAPI 扩展进行缓存,取决于将其载入内存使用时该属性的值。因此,如果在扩展已载入并进行缓存后更改属性,则只有在重新启动 Web 服务器后,所做更改才会对扩展生效。
注意:将该属性设置为 false 可能引起严重的性能问题。而且当属性设置为 false 时,某些扩展无法正常运行。