什么是抓取非常大的文件系统的最佳策略?

时间:2014-07-15 17:03:10

标签: c# concurrency parallel-processing filesystems advapi32

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

感谢您的回答

1 个答案:

答案 0 :(得分:0)

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

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

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