排查 SMB NetBIOS/FCN 限制远程内容问题

作者:Richard Marr

此疑难解答中使用的工具

  • 网络监视器

此材料仅供参考。 Microsoft 不做任何明示或暗示的担保。

概述

在 SMB 2.0 之前,我们通常会通过尝试减少 FCN (文件更改通知的组合来排查这些问题,) IIS/ASP.NET 会登记或/通过 MaxCmdsMacMpxct 设置增加限制。

由于 SMB 2.0 协议中的体系结构更改,MaxCmds 和 MacMpxct 设置不再适用,我们通常看不到这些问题。 如果你的客户运行的是支持 2.0 的 Windows 版本,则需要验证是否已启用此功能,并且内容服务器也支持此功能并启用它。

SMB 2.0 方案

下表显示了将在不同客户端/服务器方案中使用的 SMB 版本。 请注意,在远程 IIS 内容方案中,IIS 服务器是客户端。

客户端 服务器 SMB 版本
Windows Server 2008 /Vista Windows Server 2008 /Vista SMB 2.0
Windows Server 2008 /Vista Windows 2000、XP、2003 SMB 1.0
Windows 2000、XP、2003 Windows Server 2008 /Vista SMB 1.0
Windows 2000、XP、2003 Windows 2000、XP、2003 SMB 1.0

如何判断正在使用的版本?

在网络监视器中,可以查看“协议名称”,它将列出 1.0 的 SMB 或 2.0 的 SMB2。

显示协议名称类型的“网络监视器”窗格的屏幕截图。

或者,如果你不想依赖于分析器,则可以使用此技巧,与我共享的网络团队。 从跟踪中查找 NTCreate 命令。 你可能会此 NT 创建 AndX。 在帧详细信息中展开 SMB 详细信息。 对于 SMB 1.0,NTCreate 命令偏移量将0xA2,如果0x5,则为 SMB 2.0。 . 下面是 SMB 1.0 表示形式的示例。

“框架详细信息”窗格的屏幕截图。展开的列表中突出显示了 S M B 命令字段。

如果你使用的是 Windows 2008 或更高版本,并且你未使用 SMB 2.0,并且后端文件服务器支持此功能,则可以禁用它。

可以通过检查以下注册表位置来验证这一点。 HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters 用于密钥 Smb2

如果其集 = 0,则禁用 SM2.0。

SMB 1.0 方案

通常,在预 IIS 7.0 -2008 方案中或客户端 (IIS) 或服务器 (UNC 共享) 不支持 2.0 时,你会看到这些情况。 在这种情况下,需要完成尝试限制客户端 (IIS 或 asp.net) 和 /或增加支持的限制的文件更改监视器数的练习。

(MaxCmds 和 MaxMpxCt) 增加限制

每当 MaxCmdsMaxMpxCt 的下限生效时,客户端与服务器之间的协商限制就会生效。

例如,如果你有一个场景,即在 IIS 服务器上设置 MaxCmds = 2000,而文件服务器 MaxMPXCt = 50,50 将是有效设置。

如何知道有效设置?

显然,询问是一种方法,但有时文件服务器是第三方,我们无法验证设置。

若要验证这一点,需要在设置 SMB 连接期间捕获网络跟踪,首次访问内容时会发生此情况

  • 启动网络监视器
  • 重置 II 或回收应用程序池
  • 通过位于远程文件服务器上的 http 访问某些内容
  • 停止网络跟踪

在网络跟踪中,你要查找文件服务器响应 NEGOTIATE 函数。 在此中,你将从文件服务器中找到 MaxMpxCount 响应。 如果这低于 IIS 服务器设置,这将是有效限制,因此在上面的示例中,它将为 50

“框架详细信息”窗格的屏幕截图。突出显示了“最大 M P X 计数”字段。

应将 MaxCMds 和 MaxMpxCt 设置为什么 #? 请参阅以下参考。

优化用于 UNC 内容的服务器 (IIS 6.0)

减少文件更改监视器

IIS 内容

2494628如何配置 IIS 7 以限制 UNC 共享 () https://vkbexternal.partners.extranet.microsoft.com/VKBWebService/ViewContent.aspx?scid=B;2494628 更改通知的文件访问

ASP.NET 内容

设置 Asp.net FCN 模式以减少 ASP.Net FCN 监视器

其他资源