海量小文件传输慢的原因以及对应的优化方案

在日常工作中,我们经常遇到需要传输一些小文件的情况,但是当小文件的数量很多的时候,为什么小文件传输的速度就会变得很慢呢?为什么复制许多较小的文件时,小文件传输效率就会降低呢?针对这些问题,小编为大家整理了一些小文件传输慢的原因以及小文件传输的优化方案。

假如我要把一个便携式软件目录从电脑复制到外置HDD。一个application.exe文件的大小大约是4MB,但是其他大部分文件的大小只有几十KB,并且这些文件相比于4MB的大文件来说,复制/移动的时间更长。

传输数据的时候,如果是移动一个大文件,那么只需要写一次目录项,然后把数据连续地写入就可以了。如果是很多个文件的话,就要写目录信息,再跳到文件区域写数据,然后再回来写下一个文件的目录项,再跳回去写数据,如此反复。

如果是进行小文件传输,那么在源端就有一个open + read + close,在目标端就有一个open + write + close,并且在目标端还要创建所有相关属性(ctime / atime / mtime等)。碎片(需要更多的寻道时间)也会影响数据速率。比如sata通道的堵塞也可能是一个问题。这也是为什么大文件有更长的连续读或写,传输速度更快,而小文件传输却很慢。

这是Windows的工作方式,也是HDD不好的地方。通常来说,SSD在复制小文件方面表现得更好。您可以看一下关于HDD和SSD的文件传输速度的基准测试。但是您也要知道还有其他因素,比如Windows先读取文件,然后由防病毒软件检查它们,然后再把它们写入新的目标文件夹。更别说剪切文件时,还要加上删除过程。所以,文件越多,就需要越多的“实时”时间来复制更多的文件。

由于写入(外部)HDD的数据没有被缓存,而是直接写入HDD,而且USB驱动器还要为每个文件处理索引(FAT, Allocation Table),所以必须把HDD缓存从文件数据切换到文件分配数据。因为如果在缓存时出现故障,则文件会丢失,HDD会损坏等等。内部驱动器可以被缓存。然后它可以把文件快速地写入硬盘。实际上,它们会像整个商业计算机行业那样让您减速。USB硬盘驱动器上的其他驱动程序不是智能驱动器,也不是硬盘驱动器。人们想要便宜的东西。他们不会在硬盘的说明中说出来,不,当然不会。他们只提到大文件传输速率。

您可以这样想象,分配了一个任务,从A点到B点拿走10本书(10个文件),如果它们是分开的,则计算机需要把它拿到B点再回到A点去拿下一本书等等。而如果只需要拿一本和10本书总重量相当的大书,则搬运书的时间会更久,但是由于计算机只要走一趟,所以这会是一个更快的过程。

那么针对小文件传输慢,需要复制较小的文件时候,海量的小文件传输效率低下的情况,镭速(企业、社会组织用户可申请免费试用)提供海量级的小文件传输优化方案,小文件传输每秒5000个以上,百万数量级文件能在5分钟内完成列表,相同文件秒传速度可达每秒20000个,速度比传统的FTP快100倍以上。

跨国传输速度对比

从中国到美国,使用镭速传输海量小文件,比公司同一区域两台机器互传还快。

从上面的分析可以看出,小文件传输慢的原因主要有以下几点:文件系统的结构,硬盘驱动器的性能,操作系统的处理方式,防病毒软件的干扰等。这些因素都会影响小文件传输的效率和速度,导致用户在工作中遇到困难和麻烦。

为了解决这个问题,我们需要采用一些小文件传输的优化方案,比如使用SSD替代HDD,关闭不必要的防病毒软件,使用专业的小文件传输软件等。这些方案都可以提高小文件传输的效率和速度,让用户在工作中更加顺畅和高效。

如果您也经常需要进行小文件传输,镭速软件还是不错的。镭速软件可以在工作中轻松应对海量的小文件传输任务,节省工作时间和精力,提升工作效率和质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis插件

文章目录 1. 如何自定义插件1.1 创建接口Interceptor的实现类1.2 配置拦截器1.3 运行程序 2. 插件原理2.1 解析过程2.2 创建代理对象2.2.1 Executor2.2.2 StatementHandler2.2. 3ParameterHandler2.2.4 ResultSetHandler 2.3 执行流程2.4 多拦截器的执行顺序 3. PageHelper3.1 …

聊天系统登录后端实现

定义返回的数据格式 # Restful API from flask import jsonifyclass HttpCode(object):# 响应正常ok 200# 没有登陆错误unloginerror 401# 没有权限错误permissionerror 403# 客户端参数错误paramserror 400# 服务器错误servererror 500def _restful_result(code, messa…

Matlab Optimization Toolbox中的遗传算法工具包(GA)

matlab optimization 中使用了GA求解器 默认的是小于等于 找到GA 工具包 找到 APP选择 Optimization Tool 选择Solver ga - Genetic Algorithm 应用GA solver 定义适应度函数(Fitness function)与问题约束(Constraints) example one 优化函数 sin(x) 2 * cos(x)极其重要的…

windows10 设置代理

场景:同一个办公室,只有A的电脑有权限访问网站 http://10.129.129.129:5601, 那办公室其他B,C同学想访问 http://10.129.129.129:5601,需要怎么处理? A 同学电脑安装代理软件: 1. 下载wproxy IMFirewall, …

iMX6ULL驱动开发 | 让imx6ull开发板支持usb接口FC游戏手柄

手边有一闲置的linux开发板iMX6ULL一直在吃灰,不用来搞点事情,总觉得对不住它。业余打发时间就玩起来吧,总比刷某音强。从某多多上8块儿大洋买来一个usb接口的游戏手柄,让开发板支持以下它,后续就可以接着在上面玩童年…

信息学奥赛一本通——1258:【例9.2】数字金字塔

文章目录 题目【题目描述】【输入】【输出】【输入样例】【输出样例】 AC代码 题目 【题目描述】 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上面…

Java-很深我只知其一-泛型

Java-很深我只知其一-泛型 目录 泛型历史 泛型类/泛型接口 泛型方法 泛型属性 泛型约束 泛型历史 JAVA 泛型(generics)是 JDK 5 中引入的一个新特性, 允许程序员在编程时指定类型参数,使编译器可以在编译代码时检测到非法的类型。泛型的…

小研究 - 主动式微服务细粒度弹性缩放算法研究(四)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放,忽略了能够充分利用单台服务器资源的细粒度垂直缩放,从而导致资源浪费。为此,本文设计了主动式微服务细粒度弹性缩放算法…

Java 版 spring cloud + spring boot 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…

基于以太坊+IPFS的去中心化数据交易方法及平台

自己的论文,哎费事 目录 基于以太坊IPFS的去中心化数据交易方法及平台 基于以太坊IPFS的去中心化数据交易方法及平台 摘要: 数据交易过程中存在数据权属不明和数据安全问题。本文开发了一种基于以太坊IPFS的去中心化数据交易方法及平台。方法包括&am…

IPv4网络用户访问IPv6网络服务器

NAT64静态映射为一对一的对应关系&#xff0c;通常应用在IPv4网络主动访问IPv6网络的场景中。 要求位于IPv4网络中的PC通过IPv4地址1.1.1.10能够直接访问位于IPv6网络中Server。 操作步骤 配置FW。 # 配置接口GigabitEthernet 0/0/1的IPv4地址。 <FW> system-view [F…

IP 工具

什么是IP 工具 IP 工具是用于轻松扫描和排除网络 IP 地址空间故障的网络工程工具。IP 工具使网络管理员能够审核、跟踪和监视 IP 地址、子网以及使用 IP 的设备和主机的性能。这个全面的网络工程工具集包括高级 IP 工具&#xff0c;如 Ping、系统资源管理器、MAC 地址解析器和…

设计模式行为型——解释器模式

目录 什么是解释器模式 解释器模式的实现 解释器模式角色 解释器模式类图 解释器模式举例 解释器模式代码实现 解释器模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;属于行为型模式&…

《零基础入门学习Python》第075讲:GUI的终极选择:Tkinter12

Tkinter 的基本组件我们已经介绍得七七八八了&#xff0c;剩下的一些我们在这节课全部都会讲解完毕。 &#xff08;一&#xff09;Message组件 Message&#xff08;消息&#xff09;组件是 Label 组件的变体&#xff0c;用于显示多行文本消息。众所周知&#xff0c;我们的Lab…

【腾讯云 Cloud Studio 实战训练营】Redisgo_task 分布式锁实现

文章目录 前言问题场景腾讯云 Cloud Studio Redisgo_task长短类型分布式场景介绍Redisgo_task实现原理SetNx(valueexpire)原子性子协程Done()时间点子协程中的Ticker Redisgo_task唯一外部依赖Redisgo_task Lock结构Redisgo_task架构健壮性设计Redisgo_task可扩展性Redisgo_tas…

MyBatis-Plus 和达梦数据库实现高效数据持久化

一、添加依赖 首先&#xff0c;我们需要在项目的 pom.xml 文件中添加 MyBatis-Plus 和达梦数据库的依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifac…

微信小程序使用 canvas 2d 实现签字板组件

本文是在微信小程序中使用 canvas 2d 来实现签字板功能&#xff1b; 效果图&#xff1a; 代码&#xff1a; 1、wxml <view><canvas id"canvas"type"2d"bindtouchstart"start"bindtouchmove"move"bindtouchend"end&qu…

Scratch Blocks自定义组件之「下拉图标」

一、背景 由于自带的下拉图标是给水平布局的block使用&#xff0c;放在垂直布局下显得别扭&#xff0c;而且下拉选择后回修改image字段的图片&#xff0c;这让我很不爽&#xff0c;所以在原来的基础上稍作修改&#xff0c;效果如下&#xff1a; 二、使用说明 &#xff08;1&am…

【图论】差分约束

一.情景导入 x1-x0<9 ; x2-x0<14 ; x3-x0<15 ; x2-x1<10 ; x3-x2<9; 求x3-x0的最大值&#xff1b; 二.数学解法 联立式子2和5&#xff0c;可得x3-x0<23;但式子3可得x3-x0<15。所以最大值为15&#xff1b; 三.图论 但式子多了我们就不好解了&#xff0…

【MySQL】视图与用户管理

【MySQL】视图 视图视图概念使用基表与视图的相互影响 用户管理新增用户删除修改密码 用户权限授予权限回收权限 视图 视图概念 视图就是一张虚拟表&#xff0c;其内容由查询定义。与真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化影响到基表&…