介绍
在Windows 10(更新 1703 或 1809),从网络驱动器启动的应用程序在一段时间后崩溃60到95分钟。在 Windows 7 上应用程序运行完美。
数周来,实验室一直在对其行为进行监控,涉及多个 32 位和 16 位应用程序。
症状
- 从网络驱动器启动应用程序的所有尝试都成功;
- 所有受影响的 32 位应用程序 EXE/DLL(电力建设者) 记录了0xc0000006例外情况事件查看器。
- 在 16 位应用程序上(MS-DOS 版 Foxpro 2.6)发生错误“无法处理错误“或者干脆中断并退出。
- 偶尔”尝试报告错误 104 时发生致命错误 104“发生。
- 即使在连续使用过程中也会发生故障(没有发生明显的不活动期);
- 故障仅发生在Windows 10运行更新 1703 或更新 1809 的 32 位/64 位工作站。Windows 7 工作站很好。
- 收集到的分析表明,从60到95首次发射和休息之间的时间间隔为几分钟;
- 使用Wireshark, 错误状态_网络_会话_已过期在某些情况下发生故障时会持续记录。
- 当在不同时间启动多个实例时,它们都在同一秒失败;
- 即使网络驱动器启动的实例最终失败,从本地驱动器启动的实例仍运行良好;
- 所有受影响的站点服务器均运行Windows 2016 服务器;
- 网络驱动器在失败后似乎可以正常运行;
- 在应用程序中断之前、期间或之后,网络连接似乎从未失败过(连续 PING);
测试实验室系统配置
- Windows Server 2016 基本版 (1607)
- Windows 10 32 位 / 64 位(更新 1703 / 1809)
- Windows 7(仅 32 位)
- 电缆
- 转变
服务器网络配置
Powershell命令的结果Get-SMBServerConfiguration
:
AnnounceComment :
AnnounceServer : False
AsynchronousCredits : 512
AuditSmb1Access : False
AutoDisconnectTimeout : 999999
AutoShareServer : True
AutoShareWorkstation : True
CachedOpenLimit : 10
DurableHandleV2TimeoutInSeconds : 180
EnableAuthenticateUserSharing : False
EnableDownlevelTimewarp : False
EnableForcedLogoff : True
EnableLeasing : False
EnableMultiChannel : True
EnableOplocks : True
EnableSecuritySignature : True
EnableSMB1Protocol : True
EnableSMB2Protocol : True
EnableStrictNameChecking : True
EncryptData : False
IrpStackSize : 15
KeepAliveTime : 2
MaxChannelPerSession : 32
MaxMpxCount : 50
MaxSessionPerConnection : 16384
MaxThreadsPerQueue : 20
MaxWorkItems : 1
NullSessionPipes : netlogon,samr,lsarpc
NullSessionShares :
OplockBreakWait : 35
PendingClientTimeoutInSeconds : 120
RejectUnencryptedAccess : True
RequireSecuritySignature : True
ServerHidden : True
Smb2CreditsMax : 8192
Smb2CreditsMin : 512
SmbServerNameHardeningLevel : 0
TreatHostAsStableStorage : False
ValidateAliasNotCircular : True
ValidateShareScope : True
ValidateShareScopeNotAliased : True
ValidateTargetName : True
工作站网络配置
Powershell命令的结果Get-SMBClientConfiguration
:
ConnectionCountPerRssNetworkInterface : 4
DirectoryCacheEntriesMax : 16
DirectoryCacheEntrySizeMax : 65536
DirectoryCacheLifetime : 0
DormantFileLimit : 1023
EnableBandwidthThrottling : True
EnableByteRangeLockingOnReadOnlyFiles : True
EnableInsecureGuestLogons : True
EnableLargeMtu : True
EnableLoadBalanceScaleOut : True
EnableMultiChannel : True
EnableSecuritySignature : False
ExtendedSessionTimeout : 1000
FileInfoCacheEntriesMax : 64
FileInfoCacheLifetime : 0
FileNotFoundCacheEntriesMax : 128
FileNotFoundCacheLifetime : 5
KeepConn : 65535
MaxCmds : 50
MaximumConnectionCountPerServer : 32
OplocksDisabled : False
RequireSecuritySignature : False
SessionTimeout : 65535
UseOpportunisticLocking : False
WindowSizeThreshold : 8
我们已经做了什么
- 已检查事件查看器,甚至在 SMBCLIENT 和 SMBSERVER 子事件上,但无法找到事件和应用程序故障之间的关联。
- 尝试设置 SMB会话超时设置为65535在工作站上重新启动,如所指出的哈里克;
- 尝试设置 SMB凯普康设置为65535在工作站上重新启动;
- 禁用自动断开连接(将其更改为 -1)然后重新启动;
- 尝试启用1. SMB1(超级存储模块)在服务器/工作站上然后重新启动;
- 尝试在服务器/工作站上禁用防病毒软件(ESET),然后重新启动;
- 禁用服务器/工作站卡上的省电网络,然后重新启动;
- 尝试禁用服务器/工作站上的防火墙;
- 该案件已接受实验室监视数周,但无果。
还有其他人遇到过这些症状并能提供替代解决方案吗?
感谢您的关注
答案1
总的来说,Windows 10 1809 中引入了一个新的错误,微软在文章中承认了这一点
在 Windows 10 版本 1809 中映射的网络驱动器可能无法重新连接。
虽然微软已经意识到了这个问题,但预计要到 2019 年的某个时候才能永久修复。与此同时,如果这确实是你遇到的问题,你可以使用文章中提供的解决方法来缓解这个错误。
下面我列出了一些用户在互联网论坛上提出的其他解决方法。
尝试在客户端上将值设置为SessionTimeout
65535 秒。可以使用 PowerShell 命令完成此操作
设置 SmbClientConfiguration -SessionTimeout。
它也可能位于注册表中
HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\ LANMANWORKSTATION\PARAMETERS\SESSTIMEOUT
(请参阅此旧链接)。
我建议随后重新启动。
其他可能的解决方法:
将组策略更改为更新而不是代替组策略对象 (GPO) 中的驱动器映射: 用户配置 > 首选项 > Windows 设置 > 驱动器映射。 看关联有人报告说可以设置为刷新。
在提升的 cmd 中在服务器和客户端上运行以下命令:
net config server /autodisconnect:-1
设置网络适配器的电源选项以禁用“允许计算机关闭此设备以节省电源”。
有些人报告说,在登录时重新映射网络共享可以解决问题,有些人为此添加了登录脚本。
其他报告建议禁用 Windows 10 快速启动。
答案2
- 如果任何服务器/客户端机箱在 VMWare 上运行,请将 VMware 工具更新至 9.0.13 或更高版本。作为 VMware 工具包的一部分,vmxnet3 以太网驱动程序应为 1.5.2 或更高版本,否则可能会无缘无故地随机丢弃软件包。
- 中间是否有防火墙或负载均衡器?请绕过它,然后看看效果如何。
- harrymc 提到的增加 SESSIONTIMEOUT 是一个好方法。我也会这么做。但我也会出于测试目的这样做:
下载 TCP Optimizer 4.0,在客户端和服务器端更改这些设置,然后重新启动两个框:将 MaxConnectionsPer1_0Server 和 MaxConnectionPerServer 都增加到 240,将 Max SYNC Retransmissions 增加到 7,将 MaxUserPort 增加到 65534,将 TCPTimedWaitDelay 增加到 180
登录客户端,通过其 IP 地址将网络驱动器挂载为 \192.168.100.xxx\Source_folder,然后运行相同的应用程序进行测试。
如果问题仍然存在,请分享您正在运行的应用程序。如果是 Java 应用程序,则可能需要进行一些调整。祝您好运,并期待知道进展如何。