亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究
1,背景介绍
公司最近最近统一了存储环境,由ftp文件存储全量转换为ceph存储。有业务组表示以前往ftp文件批量上传30万个文件1.3GB只需要16分钟左右。切换为ceph存储需要1个多小时,也就是现在现有的速度只有369kb/s。询问能如何改进。
公司内部网络和存储环境进行了压力测试。
ceph 存储系统调研读写性能测试的报告如下

我们是采用s3的接口进行文件上传的,也就是对于上面的cephrgw的接口。大概在20MB/s的速度。
2,首先我使用java程序进行验证。
发现他发给我的数据集确实以很慢的速度进行上传。和普通的文件上传具有10倍的差距左右。在调整aws-java-s3的sdk的线程池的大小后。效果也是不明显的。我采用jconsole观察线程的使用情况
3,使用AWS CLI进行快速验证
AWS CLI采用python编写,具有较为完备的日志。
安装指南:https://docs.amazonaws.cn/cli/latest/userguide/install-windows.html
调整并发数量和配置日志:https://amazonaws-china.com/cn/blogs/china/amazon-s3-depth-of-practice-series-s3-cli-depth-parsing-and-performance-testing/
批量生成不同大小的文件我采用了Bandizip(7zip只支持1MB以上的分卷大小):http://www.bandisoft.com/bandizip/
并发请求数量和分片大小我设置为:
s3 =
max_concurrent_requests = 50
multipart_threshold = 10MB
multipart_chunksize = 6MB
上传命令:
aws s3 cp C:\app\qolfile\ s3://cu-ibas/oss/public --endpoint-url http://oss.ts-pfecs.epay --recursive
命令参数说明如下:
cp: 代表拷贝文件
C:\app\qolfile:本地的目录
s3://cu-ibas/oss/public:远端s3的地址,包含bucket名称和路径
--endpoint-url http://oss.ts-pfecs.epay:指定远程端点地址
--recursive :表示递归上传文件夹里面的文件
上传并将日志存储在文件中:
aws s3 cp C:\app\qolfile\ s3://cu-ibas/oss/public --endpoint-url http://oss.ts-pfecs.epay --recursive --debug >upload.txt 2>&1
upload.txt的文件部分内容摘要
2019-07-17 15:34:50,100 - ThreadPoolExecutor-1_2 - s3transfer.tasks - DEBUG - Executing task UploadSubmissionTask(transfer_id=2, {'transfer_future': <s3transfer.futures.transferfuture object="" at="" 0x0000026005c559e8="">}) with kwargs {'client': <botocore.client.s3 object="" at="" 0x0000026005b972b0="">, 'config': <s3transfer.manager.transferconfig object="" at="" 0x0000026005bf8e48="">, 'osutil': <s3transfer.utils.osutils object="" at="" 0x0000026005bf8eb8="">, 'request_executor': <s3transfer.futures.boundedexecutor object="" at="" 0x0000026005c43080="">, 'transfer_future': <s3transfer.futures.transferfuture object="" at="" 0x0000026005c559e8="">}
2019-07-17 15:34:50,101 - ThreadPoolExecutor-1_3 - s3transfer.tasks - DEBUG - UploadSubmissionTask(transfer_id=3, {'transfer_future': <s3transfer.futures.transferfuture object="" at="" 0x0000026005c6b128="">}) about to wait for the following futures []
2019-07-17 15:34:50,101 - ThreadPoolExecutor-1_3 - s3transfer.tasks - DEBUG - UploadSubmissionTask(transfer_id=3, {'transfer_future':
ThreadPoolExecutor带有49,50等信息就代表并发请求数生效了。然后我做了不同文件大小的测试速度情况:
| 分卷文件大小 | 观察的上传速度 |
|---|---|
| 1MB | 1.5MB/s |
| 500KB | 800KB/s |
| 10KB | 390KB/s |
| 1KB | 100KB/s |
这也就是说明了每个文件的大小对于文件上传速度是有影响的。如果每个文件的大小都大于1MB以上。在设置恰当的s3上传的带宽能够跑满。如果每个文件都小于1KB的情况下。上传速度会很慢的。
4,总结
先给出这个小文件数据集的情况下,没有办法提高上传速度。应用层可以采用边生成文件,边上传文件的模式来加快批量处理的速度。也就是采用生产者消费者模式。队列可以采用内存队列,可以采用redis的queue放置消费任务。
亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究的更多相关文章
- 在亚马逊amazon的AWS上安装Node和MongoDB服务器
在亚马逊amazon的AWS上安装Node和MongoDB服务器 在建立AWS上账号.创建EC2 ,用putty链接上之后,就可以用下面的方法开始安装. !!! 如果不是是自己建立的EC2, 而是由B ...
- 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
本挖掘典型地运用了机器学习技术,例如聚类,分类,关联规则,和预测建模.这些技术揭示潜在内容中的意义和关系.文本发掘应用于诸如竞争情报,生命科学,客户呼声,媒体和出版,法律和税收,法律实施,情感分析和趋 ...
- 亚马逊云服务器AWS安装CentOS
亚马逊云服务器默认创建的实例,在停止之后再启动的情况下,IP会发生改变.所以我们最好先创建一个弹性IP,即EIP,不过我也不清楚这个费用. 1.按如图操作创建一个弹性IP,弹性IP创建之后可以随便绑定 ...
- 亚马逊S3下载上传文件
引用网址: http://www.jxtobo.com/27697.html 下载 CloudBerry Explorer http://www.cloudberrylab.com/download- ...
- 亚马逊云VPS AWS更改LINUX为ROOT权限密码登陆
LINUX VPS没有ROOT权限是很难受的事,并且密码登陆也方便一些.首先用AWS证书验证的账户登录,1.修改ROOT密码sudo passwd root2.sudo chmod 777 /etc/ ...
- Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...
- 亚马逊AWS业务副总裁:如何在基础设施上降成本
腾讯科技 林靖东 11月17日编译 亚马逊Amazon Web Services业务的副总裁.著名工程师詹姆斯汉密尔顿(James Hamilton)在AWS re:Invent大会上解释了公司是如何 ...
- 国外物联网平台(1):亚马逊AWS IoT
国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...
- 国外物联网平台初探(一) ——亚马逊AWS IoT
平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AW ...
随机推荐
- Hadoop-No.2之标准文件格式
标准文件格式可以指文本格式,也可以指二进制文件类型.前者包括逗号分隔值(Comma-Separated Value,CSV和可扩展的标记语言文本(Extensible Markup Language. ...
- C# 反射简单介绍
原文:https://blog.csdn.net/wu1020300665/article/details/82958455 1.什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序 ...
- Redis——解决“org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redisReferenceResolver': Unsatisfied dependency expressed through constructor parameter 0”
错误栈: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ...
- 油猴Tampermonkey离线安装流程(附文件)
1.下载插件插件包,然后解压(解压到你想放插件的位置,其实任意位置都可以,记住解压的位置) 链接:https://pan.baidu.com/s/1aanhsb6ZlapnzBeBRtp3Hg 提取码 ...
- BZOJ 1406: [AHOI2007]密码箱 exgcd+唯一分解定理
推出来了一个解法,但是感觉复杂度十分玄学,没想到秒过~ Code: #include <bits/stdc++.h> #define ll long long #define N 5000 ...
- ACM-ICPC 2018 沈阳赛区网络预赛 I 题 Lattice's basics in digital electronics
原题链接:https://nanti.jisuanke.com/t/31450 附上队友代码:(感谢队友带飞) #include <bits/stdc++.h> using namespa ...
- 138企业邮箱pop/imap和smtp服务器地址
如果客户端设置的是pop模式:接收邮件服务器(pop):pop.138mail.net ,端口号是110 (如果勾选了SSL,端口号则变为995)发送邮件服务器(smtp):smtp.138mail. ...
- [CSP-S模拟测试]:物理课(数学)
题目传送门(内部题144) 输入格式 从$physics.in$读入数据. 第一行一个数$T$,代表有$T$组数据.接下来$T$行每行$4$个浮点数,分别为$\theta,v,d,g$,保留到小数点后 ...
- 05.用两个栈实现队列 Java
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路 进栈: 直接进stack1 出栈: 若stack2不为空,则出栈. 否则,当stack1不为空时, ...
- 码云转移至阿里云Code记录
用起来还是挺简单的,跟码云差不多,但关键是企业私有项目成员人数没有限制!码云限制5人(免费) 注意两点: 1.导入仓库链接的时候,如果username是邮箱含@,要换成%40,不然这个项目直接报500 ...