IIS 耗尽工作项和连接到远程的 UNC 路径时导致 RPC 失败
症状
在网站 Farm 环境,其中一个或多个 IIS Web 服务器使用一个远程 Windows NT 或 Windows 2000 文件服务器,以保存 (是例如主目录或 Web 站点在虚拟目录被映射到 UNC 路径) 的网站的内容,IIS Web 服务器可能耗尽在重定向程序级别的可用的工作上下文。 发生这种情况时可能会在 IIS Web 服务器上出现以下症状:
· IIS 似乎停止响应。 如果您检查 Inetinfo.exe 的进程转储,您将看到大量的工作线程正在等待从远程文件共享检索的内容。 在一个性能监视器日志 IIS 出现在此期间很大程度上空闲的因为线程大部分是为等待状态等待若要访问远程服务器。
· 在一台 IIS Web 服务器的本地桌面上,如果您尝试访问远程文件共享,通过网上邻居或网上邻居或通过 Windows Explorer 中使用客户端重定向程序它似乎停止响应无限期地。 如果 UNC 路径被映射到 Windows Explorer 中的某个本地驱动器字母,并且 Windows 资源管理器处于打开状态,它会出现停止响应以及。 这可以让整个操作系统已停止响应事实上拥有不时的外观。
· 工作上下文的最大数量完特定服务器上时,可能会出现下面的错误信息:
RPC 1792 的远程过程调用失败,,没有不执行。
Netlogon 5719 无法找到域控制器。
当您尝试建立服务器任何其他 RPC 连接达到工作上下文的最大数量时,可能会出现这些错误信息。
· 已达到网络 BIOS 命令限制。
· 在以下 ID 记录事件消息是:
IIS 服务器上的事件 ID 101:
事件类型: 警告
事件来源: W3SVC
事件类别: 无
事件 ID:101
日期: 9 / 5 / 2002
Time:8:07:28 AM
用户: N / A
计算机: < 服务器名 >
说明:
服务器无法添加虚拟根目录 / 虚拟 dir name > 为目录 \\ <servername> \ <share> \ 以下错误: 达到 </a0>-网络 BIOS 命令限制。 数据是错误代码。 有关与此消息相关的其他信息请访问的 Microsoft 联机支持站点位于: http://search.support.microsoft.com/search/?adv=1。
原因
为特定客户端,服务器运行的工作上下文中。 在 Windows 2000 中不存在硬编码的上限限制所有类型的客户端 (Windows NT、 Windows 95 和 Windows 98) 125 个工作上下文。
解决方案
重要 此部分方法或任务包含告诉您如何修改注册表的步骤。 但是,如果错误地修改注册表,就可能发生严重的问题。 因此,请确保认真执行这些步骤。 添加的保护注册表之前先备份您修改它。 然后,发生问题时可以还原注册表。 有关如何备份和还原在注册表的详细信息,单击下面的文章编号,以查看 Microsoft 知识库中相应:
322756 如何备份和还原在 Windows 注册表
1. 如果您运行的 Windows 2000,安装下面的 Microsoft 知识库文章,IIS 服务器和文件服务器中所述 SP 1 之后的修补程序:
271148 在 Windows 2000 中的 MaxMpxCt 和 MaxCmds 限制
2. 通过使用下面的注册表脚本,请增加 IIS 服务器上 MaxCmds 和 MaxMpxCT 文件服务器上的值:
o 保存为 client.reg 的下面的注册表脚本,并在 IIS 服务器上运行它:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters] "MaxCmds"= dword:00000800
o 保存为 Server.reg 的下面的注册表脚本,并在文件服务器上运行它:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"MaxMpxCT = dword:00000800
"MaxWorkItems"= dword:00002000
3. 默认,这些脚本指定 MaxCmds 和 MaxMpxCT 的 2,048,应该足以使大多数情况。 4 x MaxMpxCt 或 8,192 指定 MaxWorkItems 。 有关这些设置的详细信息,请参阅本文中的,"更多信息"一节。
4. 重新启动所有 IIS 服务器和文件服务器,这些更改才会生效。
请注意 如果增加 x 86 平台上的这些值,则其他非页面缓冲池内存的消耗文件服务器和 IIS 客户端上。 非页面缓冲池内存的一个上限的限制,256 兆字节 (MB) 为。 大量具有大量连接的客户端可以使用所有文件服务器上的非页面缓冲池内存。 使用性能监视器监视此计数器,并确保它不接近限制)。 x 64 平台上非页面缓冲池内存最 128 千兆字节 (GB) 的一个上限限制。 因此,您可以增加最大值的这些值。 有关在 x 86 平台和 x 64 平台上的非页面缓冲池内存的区别的更多信息,单击下面的文章编号,以查看 Microsoft 知识库中相应:
294418 64 位版本的 Windows XP 和 Windows Server 2003 的 32 位和 64 位内存结构的比较
状态
Microsoft 已确认这是"适用于"一节中列出的在 Microsoft 产品中存在的问题。
更多信息
应用此 Q271148 中描述的修复程序后, MaxMpxCt (服务器设置) 的上限从 125 变为 65,535,并且客户端上, MaxCmds (客户端设置) 的上限从变为 255 65,535。
此外,在最大数可以打开在客户端和服务器之间的并发 SMB 会话为 MaxCmds 和 MaxMpxCT 越低。 但是,连接的客户端是 Windows 95 或 Windows 98 客户端,然后有效值的 MaxMpxCt 为该客户端限制为 125。
您使用 IIS Web 服务器场方案中远程的 UNC 共享上存储的 Web 站点内容因为 IIS 使用 ReadDirectoryChangesW API 接收文件更改通知时,这些限制成为重要。 这样,这样如果文件更改,IIS 可以旧的文件的取消缓存,并从磁盘或共享的新文件,然后重新读取。 如果使用 UNC 路径作为主目录,永久的 SMB 连接将保持打开 IIS 服务器和文件服务器使用工作上下文之间。 如果目录结构足够大,有可能用尽工作上下文,并遇到前面列出的症状。
运行 IIS 的计算机可以有多个虚拟目录或指向另一个 Windows NT Server 上的共享的 Web 站点的计算机。 ASP 目录监视器使用 ReadDirectoryChangesW API 监视对其他服务器上的这些目录的任何更改。 每个挂起的 ReadDirectoryChangesW 要求在的服务器上的工作上下文,并且没有仅有限的数量的工作上下文可用。
工作上下文的数量是当协商 SMB 级别时向客户端从服务器传递的。 在客户端重定向程序保留在服务器上使用它的工作上下文的数量的一个内部计数。 工作上下文的在默认数量为 50。
工作上下文的数量仅限于防止服务器进程占用所有的非分页缓冲池内存。 这可以引发,但然后没有多少工作上下文特定的客户端可以使用限制。
此问题并不限于 IIS。 Windows NT 资源管理器使用相同的机制,来监视的目录更改。
请注意 正在运行的 Windows Server 2003 x 64 版本的计算机上不会发生此问题。 有关 MaxWorkItems 和 MaxMpxCT 设置的更多信息,单击下面的文章编号,以查看 Microsoft 知识库中的文章:
232476 终端服务器客户端连接和登录受 MaxWorkItem 和 MaxMpxCt 值
271148 在 Windows 2000 中的 MaxMpxCt 和 MaxCmds 限制
这篇文章中的信息适用于:
· Microsoft Internet Information Services 6.0
· Microsoft Internet Information Services 5.0
· Microsoft Internet Information Server 4.0
· Microsoft Internet Information Services 7.0

浙公网安备 33010602011771号