应用 IIS 配置设置

默认情况下,基于 SOAP、HTTP 和 HTTP 的 WCF 适配器通常 (和 .NET) 仅打开两个从每个 BizTalk 主机实例到任何特定目标服务器的并发 HTTP 连接。 例如,如果你有一个将消息发送到 http://www.contoso.com/SomeWebService.asmx的 SOAP 发送端口,则默认情况下,在每个BizTalk Server上运行的每个主机实例将只打开两个并发 HTTP 连接到 www.contoso.com,无论需要发送多少消息。

此设置符合 HTTP 1.1 规范的 IETF RFC,尽管它适用于用户方案,但它并未针对高吞吐量服务器到服务器的通信进行优化。 默认设置有效地将每个目标服务器的出站 SOAP 和 HTTP 调用限制为来自每个BizTalk Server主机实例的两个并发发送。

为 IIS 7.0 集成模式配置 ASP.NET MaxConcurrentRequests

当 ASP.NET 2.0 托管在集成模式下的 IIS 7.0 上时,线程的使用与在 IIS 6.0 或经典模式下的 IIS 7.0 上的处理方式不同。 当 ASP.NET 2.0 以集成模式托管在 IIS 7.0 上时,ASP.NET 2.0 会限制并发执行请求的数量,而不是并发执行请求的线程数。 对于同步方案,这将间接限制线程数,因为请求数将与线程数相同。 但对于异步方案,请求数和线程数可能会大相径庭,因为请求数可能远远多于线程。 在集成模式下在 IIS 7.0 上运行 ASP.NET 2.0 时,将忽略 machine.config 中“httpRuntime”元素的 minFreeThreads 和 minLocalRequestFreeThreads。 对于 IIS 7.0 集成模式,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 内名为 MaxConcurrentRequestsPerCPU 的 DWORD 确定每个 CPU 的并发请求数。 默认情况下,注册表项不存在,每个 CPU 的请求数限制为 12。 .NET Framework 3.5 SP1 包括 v2.0 二进制文件的更新,该二进制文件支持通过 aspnet.config 文件配置 IIS 应用程序池。 此配置仅适用于集成模式, (经典/ISAPI 模式) 忽略这些设置。下面列出了具有默认值的新 aspnet.config 配置部分:

<system.web>
   <applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>
</system.web>

根据经验法则,MaxConcurrentRequestsPerCPU 应设置为非常大的值,例如 5000。

在 IIS 7.0 集成模式下,machine.config 文件的“processModel”部分中的 maxWorkerThreads 和 maxIoThreads 参数本身不用于控制正在运行的请求数,但它们仍用于控制 ASP.NET 使用的 CLR 线程池的大小。 当 machine.config 的“processModel”部分具有“autoConfig=true” (这是默认设置) 时,这将为每个逻辑 CPU 提供最多 100 个工作线程 (MaxWorkerThreads) 。 因此,具有 2 个双核 CPU 的常见商品服务器将具有 400 个 MaxWorkerThreads。 这应该足以满足所有要求,但要求最苛刻的应用程序。

有关在 IIS 7.0 和 6.0 上配置 ASP.NET 线程使用情况的详细信息,请参阅 Thomas Marquardt 关于 IIS 7.0 和 6.0 上的 ASP.NET 线程使用情况的博客 () https://go.microsoft.com/fwlink/?LinkId=157518

仅记录基本信息或完全禁用 IIS 日志记录

应在生产环境中最小化甚至禁用 IIS 日志记录。 若要禁用日志记录,请执行以下步骤:

  1. 单击 “开始”,指向“ 所有程序”,单击“ 管理工具”,然后单击“ Internet Information Services (IIS) 管理器”。

  2. 在“ 连接 ”窗格中,单击以展开 “站点”,单击以选择要为其禁用日志记录的网站,单击以选择“ 功能视图”,然后双击 “日志记录 ”功能。

  3. 单击“操作”窗格中的“禁用”,禁用此网站的日志记录。

在生产环境中禁用 IIS ASP 调试

应在生产环境中禁用 IIS ASP 调试。 若要禁用 IIS ASP 调试,请执行以下步骤:

  1. 单击 “开始”,指向“ 所有程序”,单击“ 管理工具”,然后单击“ Internet Information Services (IIS) 管理器”。

  2. 在“ 连接 ”窗格中,单击以展开 “站点”,单击以选择要为其禁用 ASP 调试的网站,单击以选择“ 功能视图”,然后双击 ASP 功能。

  3. 单击以展开 “编译”,单击以展开 “调试属性”,并验证 “启用客户端调试”“启用服务器端调试” 是否设置为 “False”。

  4. 如有必要,单击“操作”窗格中的“应用”。

    通过在 web 应用程序的 web.config 文件中指定 <编译 debug=“false”> 部分,禁用 ASP.NET 应用程序和 Web 服务的调试。

优化“每个处理器的 ASP 线程数限制”属性的值

每个处理器的 ASP 线程数限制 ”属性指定 IIS 创建的每个处理器的最大工作线程数。 增加“每处理器线程数限制”的值,直到处理器利用率达到至少 50% 或更高。 此设置可能会极大地影响 Web 应用程序的可伸缩性和服务器的一般性能。 由于此属性定义可以同时执行的最大 ASP 请求数,因此此设置应保留默认值,除非 ASP 应用程序对外部组件进行扩展调用。 在这种情况下,可以增加“每处理器线程数限制”的值。 这样,服务器就可以创建更多线程来处理更多并发请求。 每个处理器线程限制的默认值为 25。 此属性的最大建议值为 100。

若要增加“每处理器线程数限制”的值,请执行以下步骤:

  1. 单击 “开始”,指向“ 所有程序”,单击“ 管理工具”,然后单击“ Internet Information Services (IIS) 管理器”。

  2. 在“ 连接 ”窗格中,选择 Web 服务器,单击以选择“ 功能视图”,然后双击 ASP 功能。

  3. 单击以展开“行为”下的“限制属性”,单击“每个处理器的线程数限制”,输入“每个处理器线程数限制”的所需值,然后单击“操作”窗格中的“应用”。

    有关如何修改 IIS 7.0 <asp> 元素的 <limits> 元素中的属性的详细信息,请参阅 ASP Limits <> (https://go.microsoft.com/fwlink/?LinkId=157483) 。

注意

由于此属性只能在服务器级别应用,因此修改此属性会影响在服务器上运行的所有网站。

注意

IIS 7.0 的 ASP 线程数限制 属性取代了 IIS 6.0 ASPProcessorThreadMax ASP 元数据库设置。 有关 IIS 6.0 ASPProcessorThreadMax ASP 元数据库设置的信息,请参阅在 MSDN 上 优化 ASP 元数据库设置 (https://go.microsoft.com/fwlink/?LinkId=158834) 。

优化 ASP 队列长度属性的值

优化此属性的目的是确保良好的响应时间,同时最大限度地减少 ASP 请求队列已满时服务器向客户端发送 HTTP 503 (服务器太忙) 错误的频率。 如果 ASP 队列长度属性的值太低,服务器将以更高的频率发送 HTTP 503 错误。 如果 ASP Queue Length 属性的值太高,用户可能会感觉到服务器没有响应,而实际上他们的请求正在队列中等待。 通过在高流量期间监视队列,应识别 Web 请求高峰和谷的模式。 记下峰值,并将 ASP 队列长度属性的值设置为恰好高于峰值的值。 使用队列处理短期峰值,确保响应时间,并限制系统,以避免在持续出现意外峰值时过载。 如果没有用于调整 ASP 队列长度属性的数据,一个很好的起点是设置队列与总线程的一比一比率。 例如,如果“每个处理器的 ASP 线程数限制”属性设置为 25,并且有 4 个处理器 (4 * 25 = 100 个线程) ,请将 ASP 队列长度属性设置为 100 并从那里进行优化。

若要增加队列长度属性的值,请执行以下步骤:

  1. 单击 “开始”,指向“ 所有程序”,单击“ 管理工具”,然后单击“ Internet Information Services (IIS) 管理器”。

  2. 在“ 连接 ”窗格中,选择 Web 服务器,单击以选择“ 功能视图”,然后双击 ASP 功能。

  3. 单击以展开“行为”下的“限制属性”,单击“队列长度”,输入队列长度的所需值,然后在“操作”窗格中单击“应用”。

    有关如何修改 IIS 7.0 <asp> 元素的 <limits> 元素中的属性的详细信息,请参阅 ASP Limits <> (https://go.microsoft.com/fwlink/?LinkId=157483) 。

注意

由于此属性只能在服务器级别应用,因此修改此属性会影响在服务器上运行的所有网站。

注意

IIS 7.0 的 ASP 队列长度 属性替换 IIS 6.0 AspRequestQueueMax ASP 元数据库设置。 有关 IIS 6.0 AspRequestQueueMax ASP 元数据库设置的信息,请参阅在 MSDN 上 优化 ASP 元数据库设置 (https://go.microsoft.com/fwlink/?LinkId=158834) 。

优化 MaxPoolThreads 注册表项

此设置指定要为每个处理器创建的池线程数。 池线程watch请求和处理传入请求的网络。 MaxPoolThreads 计数不包括 ISAPI 应用程序使用的线程。 通常,每个处理器不应创建超过 20 个线程。 MaxPoolThreads 是位于 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\ 的REG_DWORD注册表项,默认值为 4。

禁用 WCF 服务跟踪

使用配置编辑器工具 (SvcConfigEditor.exe) 在生产环境中禁用 WCF 服务跟踪。 有关配置编辑器工具的详细信息,请参阅 配置编辑器工具 (SvcConfigEditor.exe) (https://go.microsoft.com/fwlink/?LinkID=127070) 。

另请参阅

清单:配置 BizTalk Server