向Windows服务器写入文件时SMB2 FIND请求过多的原因?

问题描述 投票:0回答:1

我有一个在 Windows 10 上运行的 Win32 应用程序,并将文件写入 Windows Server 2016。它在服务器上创建新文件,还在服务器上打开二进制文件,锁定部分文件,然后写入文件。然后它释放锁并关闭文件。

在此过程中,我们在网络数据包扫描中看到我们收到了许多这样的请求:

SMB2_FIND_ID_BOTH_DIRECTORY_INFO 模式:*

这会导致我们正在写入的服务器上的文件夹的整个目录列表被发送回客户端计算机。我们的应用程序没有提出此类请求,我们也不知道它们来自哪里。这些目录列表可以包含数千个文件,并且会给我们的网络带宽带来很大的负载,以至于我们的应用程序无法跟上它在写入文件时必须完成的工作。

我们怀疑 Windows Defender 可能是原因,但我们关闭了 Defender,但这并没有产生什么影响。

这可能只是 SMB2 协议的一个功能吗?服务器发回这些目录列表是否只是对我们正在执行的文件打开和写入的自动响应?

有人可以向我推荐 SMB2 文档,该文档解释了持续 SMB2 FIND 请求的这种行为吗?

有什么方法可以阻止发送这些目录列表吗?

尝试网络抓包,未能找到SMB2 FIND请求的原因。

尝试删除 Windows Defender。

windows bandwidth smb
1个回答
0
投票

问题原来是,当我们在服务器上创建新文件时,我们使用临时文件名创建它们,然后在将文件重命名为其永久名称之前验证它们。正是这种重命名导致了过多的 SMB2_FIND_ID_BOTH_DIRECTORY_INFO 模式:* 消息,当我们停止重命名文件时,消息就停止了。

© www.soinside.com 2019 - 2024. All rights reserved.