首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速大容量网络拷贝操作

加速大容量网络拷贝操作
EN

Stack Overflow用户
提问于 2012-08-21 20:03:10
回答 2查看 663关注 0票数 0

我有一个系统,其中的文件将从一个网络共享复制到另一个网络共享。文件本身并不是很大,但要复制的文件数量为20000个。启动复制操作的.NET服务应用程序将在多台计算机上运行,但是源文件夹和目标文件夹是相同的。这个过程似乎慢得令人无法接受:

我们假设这是由于高网络I/O和磁盘I/O造成的。

应该采取哪些故障排除步骤来隔离瓶颈?在软件设计或硬件容量方面,有哪些解决方案可以加快这一过程。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-22 06:33:33

处理许多小文件总是比在一个大文件中处理相同数量的数据慢,因为所有额外的处理分配表,检查文件名引用等。当你在请求中添加网络延迟时,情况会更糟。

并不总是有用,但即使在千兆位局域网上使用windows文件共享,压缩文件(不压缩,以使其更快),并在目的地再次解压,可能会快得多

Hometoast的答案是好的,但我投票支持这个答案,因为它涵盖了磁盘和网络IO瓶颈的可能性。我真的只提供了一个变通方法,而不是一个答案。

很高兴我能在一些实用和容易做的事情上提供帮助。:)

票数 0
EN

Stack Overflow用户

发布于 2012-08-21 20:27:29

首先,确定是磁盘问题还是网络问题。从您正在写入的磁盘开始。我编写了一个快速应用程序来启动几个线程,并将随机数据写入几个固定大小的不同文件中。测量它需要多长时间。测量写入1个大文件,许多小文件。如果是磁盘,则很可能是由于许多单独的写入操作和RPM驱动器速度较慢造成的。也可能是您正在写入配置不佳的磁盘阵列。

第二,检查你的网络。您的路由器是性能不佳还是工作过度?确保您的所有机器和路由器在速度和协商上达成一致。路由器上的100Mbit全双工和服务器上的100Mbit自动协商不是一回事。(这就是我们的情况,并提供了极大的帮助)

作为Ben commented,压缩文件并传输一个大文件会有所帮助。我遇到了这个问题,实际上我已经把文件弄焦油了。它甚至比没有压缩的压缩还要快。我将SharpZipLib用于压缩和压缩。

你也可以尝试在不同的线程中缓冲你的读写。对我们来说,System.File.Copy在网络上甚至不可靠。手动缓冲我们的文件传输,显示了一些改进,但还不足以证明其复杂性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12054423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档