2

我需要获得分布在多个共享中的大约 100,000,000 个 Windows 网络文件的所有者。我在 C# 代码中使用 advapi32 GetNamedSecurityInfo 函数,但这是一个长期运行的过程。我目前正在并行抓取多个共享。对于每个共享,我都按顺序查询每个文件和文件夹。我的问题是,最小化抓取/收集时间的最佳方法是什么?

感谢您的回答

4

1 回答 1

0

最终最快的解决方案是在本地而不是通过网络查询信息。当然,这可能不是一个选择。

将通过 SMB 协议通过网络查询文件所有权。性能对延迟非常敏感,因为大量请求和响应来回传输,并且您的代码总是在发送下一个请求之前等待响应。尽管 SMB 协议的最新版本支持流水线,但您当前按网络共享顺序查询的方法意味着无论如何都不会使用流水线。

您可以通过将单个网络共享的请求拆分为多个线程来提高性能。我不知道您的特定网络共享允许多少个并发连接,但我会测试每台服务器的 8 个并发请求以查看性能如何受到影响。

于 2014-07-15T19:12:12.513 回答