应选择适当的硬件来满足预期的文件服务器负载,考虑平均负载、峰值负载、容量、增长计划和响应时间。 硬件瓶颈会限制软件优化的有效性。
客户端的通用调优参数
以下REG_DWORD注册表设置可能会影响与服务器消息块(SMB)文件服务器交互的客户端计算机的性能:
注册表项 | 注册表路径 | 违约 | 有效范围 | DESCRIPTION |
---|---|---|---|---|
ConnectionCountPerNetworkInterface | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\ConnectionCountPerNetworkInterface |
1 | 1-16 | 要与服务器建立的每个非 RSS 接口的连接数上限。 |
ConnectionCountPerRssNetworkInterface | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\ConnectionCountPerRssNetworkInterface |
4 | 1-16 | 要与服务器建立的每个 RSS 接口的连接数上限。 |
ConnectionCountPerRdmaNetworkInterface | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\ConnectionCountPerRdmaNetworkInterface |
2 | 1-16 | 要与服务器建立的每个 RDMA 接口的连接数上限。 |
每服务器最大连接数 | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\MaximumConnectionCountPerServer |
32 | 1-64 | 要与运行 Windows Server 2012 的单个服务器建立的所有接口的连接数上限。 |
DormantDirectoryTimeout | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DormantDirectoryTimeout |
600 | 服务器目录句柄通过目录租用保持打开状态的最长时间(以秒为单位)。 | |
文件信息缓存生命周期 | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileInfoCacheLifetime |
10 | 文件信息缓存超时期限(以秒为单位)。 | |
DirectoryCacheLifetime1 | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DirectoryCacheLifetime |
10 | 目录缓存超时(以秒为单位)。 | |
DirectoryCacheEntrySizeMax | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DirectoryCacheEntrySizeMax |
64 KB | 目录缓存条目的最大大小(以 KB 为单位)。 | |
FileNotFoundCacheLifetime | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileNotFoundCacheLifetime |
5 | 找不到文件缓存超时期限(以秒为单位)。 | |
CacheFileTimeout | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\CacheFileTimeout |
10 | 应用程序关闭文件的最后一个句柄后,重定向程序保留文件缓存数据的时长(以秒为单位)。 | |
DisableBandwidthThrottling | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DisableBandwidthThrottling |
0 | 将此值设置为 1 会禁用限制,并允许在高延迟网络连接上提高文件传输吞吐量。 | |
DisableLargeMtu | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DisableLargeMtu |
SMB 重定向程序每次请求能够传输最大为 1 MB 的负载,这可以提高文件传输速度。 将此注册表值设置为 1 会将请求大小限制为 64 KB。 在应用此设置之前,应评估此设置的影响。 Windows 8 的默认值为 0。 | ||
RequireSecuritySignature | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\RequireSecuritySignature |
0 | 将此值更改为 1 可对所有 SMB 通信启用 SMB 签名,从而阻止与禁用 SMB 签名的计算机进行 SMB 通信。 SMB 签名虽然会增加 CPU 成本和网络往返次数,但有助于阻止中间人攻击。 如果不需要 SMB 签名,请确保此注册表值在所有客户端和服务器上为 0 。 | |
FileInfoCacheEntriesMax | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileInfoCacheEntriesMax |
64 | 1-65536 | 确定客户端可缓存的文件元数据量。 增加此值可以减少网络流量,并在访问大量文件时提高性能。 |
DirectoryCacheEntriesMax | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DirectoryCacheEntriesMax |
16 | 1-4096 | 确定客户端可以缓存的目录信息量。 增加此值可以减少网络流量,并在访问大型目录时提高性能。 |
FileNotFoundCacheEntriesMax | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\FileNotFoundCacheEntriesMax |
128 | 1-65536 | 确定客户端可以缓存的文件名信息量。 增加该值可以减少网络流量,并在访问大量文件名时提高性能。 |
MaxCmds | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\MaxCmds |
15 | 限制会话上未完成的请求数。 增加该值可以使用更多内存,但它可以通过启用更深入的请求管道来提高性能。 使用 MaxMpxCt 增加值还可以消除由于大量未完成的长期文件请求(如 FindFirstChangeNotification 调用)而遇到的错误。 此参数不会影响与 SMB 2.0 服务器的连接。 | |
DormantFileLimit | HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\DormantFileLimit |
1023 | 指定应用程序关闭文件后,应在共享资源上保持打开的最大文件数。 |
注释
1 DirectoryCacheLifetime 注册表项控制在缺少目录租约时的目录元数据缓存。
Windows 10 版本 1803 中的已知问题会影响 Windows 10 缓存大型目录的能力。 若要解决此问题,请安装 Windows 10 版本 1809 或更高版本。
若要解决此问题,请将 DirectoryCacheLifetime 设置为 0。 此问题会影响以下版本的 Windows 10:
- Windows 10 企业版版本 1803
- 适用于工作站的 Windows 10 专业版版本 1803
- Windows 10 专业教育版版本 1803
- Windows 10 专业版版本 1803
- Windows 10 教育版版本 1803
- Windows 10 家庭版版本 1803
客户端优化示例
客户端计算机的一般优化参数可以优化计算机以访问远程文件共享,尤其是在某些高延迟网络(例如分支机构、跨数据中心通信、家庭办公室和移动宽带)上。 这些设置在所有计算机上都不是最佳或适当的。 在应用各个设置之前,应评估各个设置的影响。
注册表项 | 价值 | 违约 |
---|---|---|
DisableBandwidthThrottling | 1 | 0 |
FileInfoCacheEntriesMax | 32768 | 64 |
DirectoryCacheEntriesMax | 4096 | 16 |
FileNotFoundCacheEntriesMax | 32768 | 128 |
MaxCmds | 32768 | 15 |
从 Windows 8 开始,可使用 Set-SmbClientConfiguration
和 Set-SmbServerConfiguration
Windows PowerShell cmdlet 配置其中的许多 SMB 设置。 还可以使用 Windows PowerShell 配置仅限注册表的设置,例如:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" RequireSecuritySignature -Value 0 -Force